Systems and Methods for Attribution of a Conversion to an Impression Via a Demand Side Platform

ABSTRACT

The present invention is directed towards methods and systems for attribution of a conversion to an impression via a demand side service executing on one or more servers. The demand side service may match conversion events that occurred within a period of time of advertisements to impressions corresponding to the advertisements. The demand side service may identify a plurality of event records for the conversion events matched to the impressions. The demand side service may match an event of an event record from the plurality of event records corresponding to an advertiser and a user, to a plurality of impressions matched by the demand side service for the advertiser and the user. The demand side service may select an impression from the plurality of impressions with a time stamp less than a time stamp of a conversion event of the event record. The demand side service may further store an attribution of the selected impression with the conversion event of the event record.

RELATED APPLICATION

This present application claims priority to and is a Non-provisionalApplication of U.S. Provisional Patent Application Ser. No. 61/319,547entitled “SYSTEMS AND METHODS FOR PROVIDING A DEMAND SIDE PLATFORM”,filed on Mar. 31, 2010 and U.S. Provisional Patent Application Ser. No.61/319,561 entitled “SYSTEMS AND METHODS FOR INTEGRATION OF A DEMANDSIDE PLATFORM”, filed on Mar. 31, 2010, both of which are incorporatedherein by reference in their entirety for all purposes.

A portion of the disclosure of this patent document contains materialwhich is subject to copyright protection. The copyright owner has noobjection to the facsimile reproduction by anyone of the patent documentor the patent disclosure, as it appears in the file or records of thePatent and Trademark Office, but otherwise reserves all copyright rightswhatsoever.

FIELD OF THE DISCLOSURE

This disclosure generally relates to systems and methods for tradingonline advertising space. In particular, this disclosure relates tosystems and methods for attributing a conversion to an impression via ademand side service.

BACKGROUND OF THE DISCLOSURE

Online publishers typically provide or allocate portions of their webpages for advertising purposes. These areas are sometimes referred to asimpression opportunities. Some of the impression opportunities areavailable for advertising products, services, or businesses not directlyprovided by or related to the online publishers. In some embodiments,these impression opportunities are available to advertisers for a price.These impression opportunities are sometimes made available directly toadvertisers or through one or more advertising networks (sometimesreferred to as “ad networks”) operating as middlemen. In someembodiments, advertising exchanges provide a platform for buying andselling advertising impressions by consolidating and managing impressionopportunities across a plurality of publishers. Advertisers interestedin impression opportunities may comprise an individual, company or otherclient entity, which may be further represented by one or moreadvertising agencies. An advertising agency may design and/or implementan advertising campaign on behalf of a client and procure or buyimpression opportunities based on the advertising campaign. As onlineactivity trends upwards and advertisers are looking for the right mediato maximize their online exposure, trading in impression opportunitieshave become increasingly sophisticated.

BRIEF SUMMARY OF THE DISCLOSURE

In various aspects, the present application is directed to methods andsystems for providing a demand side platform, which integrates multiplepools of impression opportunities from multiple exchanges for bidding byadvertisers. In some embodiments, the system includes a platform,sometimes referred to as a demand side platform (DSP). The DSP mayprovide an advertiser access to a plurality of impression opportunitiesprovided via different providers, such as ad exchanges. The DSP mayfunction as an interface between the plurality of providers (or sellers)and the advertisers (buyers). The DSP may process information associatedwith the various impression opportunities and normalize these intoappropriate parameters for comparison against goals and constraints setby advertisers. In some embodiments, the DSP may statistically and/orintelligently process past and present information to help theadvertiser customize, determine or develop an ad campaign against thegoals and constraints set by the advertisers. Based on the ad campaign,the DSP may determine a bidding process or rule set. The DSP maydetermine whether to bid for an impression opportunity based on itsnormalized parameters. The DSP may dynamically update the bidding ruleset based on bidding outcomes and/or market dynamics.

In one aspect, the present invention is related to method for matching,by a demand side service, an advertisement with an impression of aplurality of impressions available across a plurality of impressionopportunity providers. The method may include receiving, by a demandside service executing on one or more servers, a request to bid forplacement of an advertisement on one or more impression opportunitiesfrom a plurality of impression opportunities available across aplurality of impression opportunity providers. The demand side servicemay determine an impression opportunity from the plurality of impressionopportunities to bid on. The demand side service may communicate, via anetwork, one or more bids via an interface to an impression opportunityprovider of the plurality of impression opportunity providers. Thedemand side service may complete a transaction to procure the impressionopportunity from the impression opportunity provider responsive to awinning bid from the one or more bids.

In some embodiments, the demand side service provides to a requestor ofthe request a single interface for bidding on impression opportunitiesacross different impression opportunity providers. The demand sideservice may provide to a requestor of the request a single interface forbidding on impression opportunities across different data interfaces toeach of the plurality of impression opportunity providers. The demandside service may receive the request comprising a goal for an adcampaign. In certain embodiments, the demand side service receives therequest comprising a constraint for placement of the advertisement.

In certain embodiments, the demand side service determines theimpression opportunity to bid on based on a goal of an ad campaignspecified by the request. The demand side service may determine theimpression opportunity to bid on based on a constraint specified by therequest. A bidding engine of the demand side service may determine aprice of a bid based on one or more bidding rules. The demand sideservice may automatically deliver the advertisement to the procuredimpression opportunity. The demand side service may determine anestimate of daily impression opportunities across the plurality ofimpression opportunity providers.

In another aspect, the present invention is related to a system formatching, by a demand side platform, an advertisement with an impressionof a plurality of impressions available across a plurality of impressionopportunity providers. The system may include a demand side platformexecuting on one or more servers. The demand side platform may matchadvertisements with impressions from a plurality of impressionopportunities offered by a plurality of impression opportunityproviders. A bidder of the demand side platform may receive a request tobid on one or more impressions for placement of an advertisement for anadvertiser. The bidder may determine an impression opportunity of theplurality of impression opportunities to bid on. In certain embodiments,the bidder communicates one or more bids via an interface to animpression opportunity provider of the plurality of impressionopportunity providers. The bidder may complete, responsive to a winningbid of the one or more bids, a transaction to procure the impressionopportunity from the impression opportunity provider.

In some embodiments, the demand side platform provides to a requestor ofthe request a single interface for bidding on impression opportunitiesacross different impression opportunity providers. The demand sideservice may provide to a requestor of the request a single interface forbidding on impression opportunities across different data interfaces toeach of the plurality of impression opportunity providers. The demandside service may receive the request comprising a goal for an adcampaign. The demand side service may receive the request comprising aconstraint for placement of the advertisement.

In certain embodiments, the bidder determines the impression opportunityto bid on based on a goal of an ad campaign specified by the request.The bidder may determine the impression opportunity to bid on based on aconstraint specified by the request. The bidder may determine a price ofa bid based on one or more bidding rules. The bidder may automaticallyprovide for delivery of the advertisement to the procured impressionopportunity. The demand side platform may determine an estimate of dailyimpression opportunities across the plurality of impression opportunityproviders.

In yet another aspect, the present disclosure is related to methods andsystems for integrating multiple pools of impression opportunities frommultiple advertising exchanges for bidding by advertisers. The methodsand systems include receiving, via an interface of a demand sideplatform (DSP), at least one constraint and at least one goal for anonline advertising campaign from a user. A bidding module of the demandside platform receives an impression opportunity for bidding, theimpression opportunity accompanied by a first set of data delivered viaa first advertising exchange. The bidding module receives anotherimpression opportunity for bidding, this impression opportunityaccompanied by a second set of data delivered via a second advertisingexchange. The bidding module may normalize the first set of data and thesecond set of data. An engine of the demand side platform may determineto bid on either impression opportunities based on the normalized firstand second sets of data and/or any bidding goals of the campaign.

In certain aspects, the present disclosure is related to methods andsystems for attributing an user event to an impression opportunity. Theimpression opportunity may be procured through a DSP. The impressionopportunity may be served and tracked via the DSP. The DSP may associateeach impression opportunity with a creative tag. The DSP may associateeach user event with an event tag. The DSP may associate an event tagwith a creative tag based at least in part on proximity of an user eventcorresponding to the event tag to an availability of an impressionopportunity corresponding to the creative tag. The DSP may attribute anuser event to a viewing of an impression opportunity based on one ormore event tags and creative tags. The DSP may attribute an user eventto a click or other action to an impression opportunity based on one ormore event tags and creative tags.

In one aspect, the present invention is related to a method forattribution of a conversion to an impression via a demand side service.A demand side service, executing on one or more servers, may matchconversion events that occurred within a period of time ofadvertisements to impressions corresponding to the advertisements. Themethod may include identifying, by the demand side service, a pluralityof event records for the conversion events matched to the impressions.The demand side service may match an event of an event record from theplurality of event records corresponding to an advertiser and a user, toa plurality of impressions matched by the demand side service for theadvertiser and the user. The demand side service may select animpression from the plurality of impressions with a time stamp less thana time stamp of a conversion event of the event record. The demand sideservice may further store an attribution of the selected impression withthe conversion event of the event record.

In some embodiments, the demand side service identifies event recordscorresponding to a user click within the period of time. The demand sideservice may identify event records corresponding to a user view withinthe period of time. The demand side service may identify a plurality ofevent records for conversion events that occurred within a predeterminednumber of days. The demand side service may match the event of a postview conversion to the plurality of impressions. In certain embodiments,the demand side service matches the event of a post click conversion tothe plurality of impressions. The demand side service may match theevent records having an advertiser identifier and a user identifiermatching the advertiser identifier and the user identifier of recordsfor the plurality of impressions.

In some embodiments, the demand side service selects the impression fromthe plurality of impressions with the time stamp closest to the timestamp of the event record. The demand side service may calculate a timelag for attribution by subtracting the time stamp of the impression fromthe event time stamp. The demand side service may determine whether thetime lag for attribution is within an attribution window for a campaignof the advertiser corresponding to the impression.

In another aspect, the present invention is related to a system forattribution of a conversion to an impression via a demand side service.The system may include a demand side service executing on one or moreservers. The demand side service may match advertisements to impressionopportunities. An events database may include a plurality of eventrecords for conversion events that occurred within a period of time ofadvertisements matched to impression opportunities by the demand sideservice. An attribution component of the demand side service may matchan event of an event record from the plurality of event records of theevents database corresponding to an advertiser and a user, to aplurality of impressions matched by the demand side service for theadvertiser and the user. The attribution component may select animpression from the plurality of impressions with a time stamp less thana time stamp of a conversion event of the event record. The attributioncomponent may store an association of the selected impression with theconversion event of the event record.

In some embodiments, the demand side service identifies event recordscorresponding to a user click within the period of time. The demand sideservice may identify event records corresponding to a user view withinthe period of time. The demand side service may identify a plurality ofevent records for conversion events that occurred within a predeterminednumber of days. In certain embodiments, the attribution componentmatches the event of a post view conversion to the plurality ofimpressions.

In some embodiments, the attribution component matches the event of apost click conversion to the plurality of impressions. The attributioncomponent may match the event records having an advertiser identifierand a user identifier matching the advertiser identifier and the useridentifier of records for the plurality of impressions. The attributioncomponent may select the impression from the plurality of impressionswith the time stamp closest to the time stamp of the event record. Theattribution component may also calculate a time lag for attribution bysubtracting the time stamp of the impression from the event time stamp.In certain embodiments, the attribution component determines whether thetime lag for attribution is within an attribution window for a campaignof the advertiser corresponding to the impression.

In some aspects, the present solution is directed to a method foridentifying a user by a demand side platform across a plurality ofdifferent advertiser exchanges. The method includes establishing, by ademand side platform executing on one or more server, a cookie mappingfor a user. The cookie mapping may include a mapping of user identifiersfor the user from one or more advertisement exchanges to a useridentifier assigned by the demand side platform for the user. The methodmay include storing, by the demand side platform to the cookie mapping,a first mapping to the user identifier of the demand side platform, thefirst mapping comprising a first user id received by a bidder from afirst advertisement exchange of a plurality of advertisement exchangesand a first exchange id for the first advertisement exchange. A biddermay insert into a bid for an impression opportunity to a secondadvertisement exchange a pixel. The pixel comprising a key to the cookiemapping and a second user id for the user and a second exchange id. Thesecond user id may be received by the bidder from a second advertisementexchange of the plurality of advertisement exchanges.

In some embodiments, the demand side platform establishes the cookiemapping to identify user data for the user collected from the pluralityof advertisement exchanges. Each of the plurality of advertisementexchanges may identify the user with a different user identifier. Apixel server of the demand side platform may establish the cookiemapping responsive to not finding a mapping of the first exchange id tothe user identifier. The demand side platform may store to the firstmapping in the cookie mapping a timestamp of when the first mapping wascreated. The demand side platform may insert the key to the cookiemapping in the pixel if the second advertisement exchange includes thesecond user id in a bid request. The demand side platform may encode thesecond user id and second exchange id into a uniform resource locator ofthe pixel. A pixel server of the demand side platform receive a callfrom the pixel and decode the second user id and second exchange id froma string parameter of a query of the call from the pixel. The pixelserver may decode the second user id and second exchange id from thestring parameter. The pixel server may store to the cookie mapping, asecond mapping to the user identifier of the demand side platform. Thesecond mapping may comprise a second user id received by the bidder froma second advertisement exchange of the plurality of advertisementexchanges and a second exchange id for the second advertisementexchange.

In some aspects, the present solution is directed to a method foridentifying user data for a user from a plurality of differentadvertiser exchanges. The method includes establishing, by a demand sideplatform executing on one or more server, a cookie for a user. Thecookie mapping user identifiers for the user from one or moreadvertisement exchanges to a user identifier assigned by the demand sideplatform for the user. A bidder of the demand side platform receives abiddable request from a first advertisement exchange of a plurality ofadvertisement exchanges. The biddable request comprising a first useridentifier of the user for the first advertisement exchange. The bidderidentifies the user identifier of the demand side platform for the userfrom the mapping of the cookie of the first user identifier to the useridentifier. The bidder may questing, using the user identifier from thecookie, a user database for data of the user collected from one or moreof the plurality of advertisement exchanges.

In some embodiments, a pixel server of the demand side platform maymaintain the cookie to map each of the different user identifiers fromeach of the plurality of advertisement exchanges to the user identifierof the user assigned by the demand side platform. The demand sideplatform may maintain the user identifier of the user valid only for thedemand side platform. The bidder may receiver a first user identifier ofthe user valid only for transactions with the first advertisementexchange. The bidder may identify that the cookie for the user is in acache of the demand side platform. Using the user identifier the biddermay obtain any one or more of the following from the user database: userprofile, user preferences, logs of user actions and geographicinformation. Using the user identifier, the bidder may obtaininformation of the user from a third-party provider. The bidder wait fora predetermined time for query results from the user database and if notreceived within the predetermined time, bid via the first advertisementexchange without user data. If received within the predetermine time,the bidder may use the user information received from the user databaseresponsive to the query to determine a bid for the first advertisementexchange. The bidder may also user information collected from a secondadvertisement exchange received from the user database responsive to thequery to determine a bid for the first advertisement exchange.

In some aspects, the present solution is directed to a method formaintaining anonymity of segment data from a third party provider whileperforming segment targeting via a demand side platform. The method mayinclude receiving, by a demand side platform executing on one or moreservers, one or more segment identifiers for segment data of a datasupplier. Each of the one or more segment identifiers comprising arandom integer uniquely assigned to a specific segment of the segmentdata. The demand side platform may provide a pixel for segmentedtargeting of an impression opportunity for an advertisement exchange.The demand side platform may use or receive from the data supplier, atracking agent to associate data collected via the demand side platformwith the segment identifier. A bidder of the demand side platformexecutes or provides a placement of an advertisement matched to animpression opportunity. The placement includes the tracking agent andthe pixel. The demand side platform may receive segment data from thedata supplier based on execution of the tracking agent. The segment datacorresponds to the segment identifier for the placement.

In some embodiments, the demand side platform receives a segment mappingdictionary comprising a mapping of the one or more segment identifiersto a corresponding segment of the segment data. In some embodiments, thedemand side platform provides the pixel comprising a remarketing pixelassociated with the segment identifier. In some embodiments, the demandside platform receives from the data supplier, the tracking agent in theform of a pixel or a cookie. In some embodiments, the demand sideplatform generates a unique placement id. The placement id may be usedto associate segment data with placement data. The demand side platformmay receive segment data on a per user basis. The demand side platformmay receive segment data on a real-time basis via an interface to thedata supplier. The demand side platform may receive segment data on areal-time basis responsive to activation of the tracking agent. Thedemand side platform, may receive segment data on an offline basis viaimport of a file of a predetermined type.

In some aspects, the present solution is related to another method formaintaining anonymity of a user corresponding to segment data from athird party provider via a demand side platform. The method includesreceiving, by a demand side platform executing on one or more servers, asegment mapping dictionary for segment data of a data supplier. Thedemand side platform may provide a demand side platform pixel for animpression via an advertisement exchange. The demand side platformreceives from the data supplier a data supplier pixel for segmentmatching. The demand side platform identifies via the segment mappingdictionary a segment identifier for the impression using the demand sideplatform pixel and data supplier pixel. A bidder of the demand sideplatform uses segment data corresponding to the segment identifier todetermine to bid on a second impression of a plurality of impressionsacross a plurality of advertisement exchanges.

In some embodiments, the segment mapping dictionary comprises aplurality of segment identifiers and each of the plurality of segmentidentifiers comprising a random integer uniquely assigned to a specificsegment of the plurality of segments of the segment data. The demandside platform may provide the demand side platform pixel comprising aremarketing pixel associated with the segment identifier. The datasupplier pixel may comprise a non-segment pixel. A bidder of the demandside platform may execute a placement of an advertisement matched to theimpression. The placement may include the data supplier pixel and thedemand side platform pixel. The demand side platform may receive segmentdata for a user associated with the impression. The segment datacorresponds to the segment identifier. The demand side platform mayreceive segment data responsive to activating the data supplier pixel.The demand side platform may generate a placement identifier for theimpression. The placement identifier may be inserted in the datasupplier pixel. The demand side platform may join segment data for theimpression from the data supplier with placement data of the impressiontracked by the demand side platform. The bidder may determine whether tomake a bid on a second impression based on the joined segment data andplacement data.

In some aspects, the present solution is directed to a method forbidding using segment data from a third party provider via a demand sideplatform. The method includes receiving, by a demand side platformexecuting on one or more servers, a biddable request from a firstexchange of a plurality of exchange. The exchange may identify aremarketing pixel corresponding to a segment identifier. The demand sideplatform identifies a segment identifier corresponding to theremarketing pixel. The demand side platform may obtain segment datacorresponding to the segment identifier. A bidder of the demand sideplatform may use the segment data to determine a bid on the firstexchange.

In some aspects, the present solution is directed to a method forbidding using segment data from a third party provider via a demand sideplatform. The method may include receiving, by a demand side platformexecuting on one or more servers, a biddable impression opportunity froma first exchange of a plurality of exchanges. The first exchange to thedemand side platform may communicate that the impression opportunity isdirected to a user identified by a remarketing pixel. The demand sideplatform may identifying that the remarketing pixel corresponds to asegment targeted by the demand side platform. A bidder of the demandside platform may place a bid on the impression opportunity responsiveto the identification.

BRIEF DESCRIPTION OF THE DRAWINGS

The foregoing and other objects, aspects, features, and advantages ofthe disclosure will become more apparent and better understood byreferring to the following description taken in conjunction with theaccompanying drawings, in which:

FIG. 1A is a block diagram depicting an embodiment of a networkenvironment comprising client machines in communication with remotemachines;

FIGS. 1B and 1C are block diagrams depicting embodiments of computingdevices useful in connection with the methods and systems describedherein;

FIGS. 2A-2D are block diagrams depicting embodiments of systems andmethods for providing a demand side platform; and

FIG. 2E is a flow diagram depicting an embodiment of a method forintegrating multiple pools of impression opportunities from multipleadvertising exchanges for bidding by advertisers;

FIG. 2F is a block diagram depicting an embodiment of a transactionenvironment for providing a normalized interface to a plurality ofexchanges;

FIG. 2G is a block diagram depicting an embodiment of a system formatching, by a demand side platform, an advertisement with an impressionof a plurality of impressions available across a plurality of impressionopportunity providers;

FIG. 2H is a block diagram depicting an embodiment of a different datarelated to bid requests for a plurality of impression opportunityproviders;

FIG. 2I is a block diagram depicting an embodiment of a different datarelated to bid response for a plurality of impression opportunityproviders;

FIG. 2J is a block diagram depicting an embodiment of defining goals andconstraints for a campaign;

FIG. 2K is a flow diagram depicting an embodiment of a method formatching, by a demand side platform, an advertisement with an impressionof a plurality of impressions available across a plurality of impressionopportunity providers;

FIG. 3A is a block diagram depicting an embodiment of an attributionprocess;

FIG. 3B-3D are block diagrams depicting an embodiment of a system andmethod for attribution processing;

FIG. 3E is a block diagram depicting one embodiment of fact tablesgenerated by an attribution process;

FIG. 3F is a flow diagram depicting an embodiment of a method forattributing a conversion event to an impression via a demand sideservice;

FIG. 4A is a block diagram depicting an embodiment of a system for usingserver-side cookies;

FIG. 4B is a flow diagram depicting an embodiment of a method for usingserver-side cookies;

FIG. 5A is a block diagram depicting one embodiment of a system forevaluating and executing an ad campaign;

FIG. 5B is a block diagram depicting one embodiment of a segmentbacktesting process;

FIG. 5C is a block diagram depicting one embodiment of a segmenttargeting process;

FIG. 5D is a flow diagram depicting an embodiment of a methodmaintaining anonymity of segment data from a third party provider whileperforming segment targeting via a demand side platform; and

FIG. 5E is a flow diagram depicting an embodiment of a method forsegment targeting by a demand side platform.

DETAILED DESCRIPTION

For purposes of reading the description of the various embodimentsbelow, the following

-   -   Section A describes a network environment and computing        environment which may be useful for practicing embodiments        described herein;    -   Section B describes embodiments of systems and methods for        providing a demand side platform;    -   Section C describes embodiments of systems and methods for        attribution of a conversion to an impression opportunity;    -   Section D describes embodiments of systems and methods for        integration and anonymization of supplier data    -   Section E describes embodiments of systems and methods for using        server side cookies for user identification and user data        collection; and    -   Section F describes embodiments of systems and methods for using        packed names in third-party data interfaces.

A. Computing and Network Environment

Prior to discussing specific embodiments of the present solution, it maybe helpful to describe aspects of the operating environment as well asassociated system components (e.g., hardware elements) in connectionwith the methods and systems described herein. Referring to FIG. 1A, anembodiment of a network environment is depicted. In brief overview, thenetwork environment includes one or more clients 102 a-102 n (alsogenerally referred to as local machine(s) 102, client(s) 102, clientnode(s) 102, client machine(s) 102, client computer(s) 102, clientdevice(s) 102, endpoint(s) 102, or endpoint node(s) 102) incommunication with one or more servers 106 a-106 n (also generallyreferred to as server(s) 106, node 106, or remote machine(s) 106) viaone or more networks 104. In some embodiments, a client 102 has thecapacity to function as both a client node seeking access to resourcesprovided by a server and as a server providing access to hostedresources for other clients 102 a-102 n.

Although FIG. 1A shows a network 104 between the clients 102 and theservers 106, the clients 102 and the servers 106 may be on the samenetwork 104. The network 104 can be a local-area network (LAN), such asa company Intranet, a metropolitan area network (MAN), or a wide areanetwork (WAN), such as the Internet or the World Wide Web. In someembodiments, there are multiple networks 104 between the clients 102 andthe servers 106. In one of these embodiments, a network 104′ (not shown)may be a private network and a network 104 may be a public network. Inanother of these embodiments, a network 104 may be a private network anda network 104′ a public network. In still another of these embodiments,networks 104 and 104′ may both be private networks.

The network 104 may be any type and/or form of network and may includeany of the following: a point-to-point network, a broadcast network, awide area network, a local area network, a telecommunications network, adata communication network, a computer network, an ATM (AsynchronousTransfer Mode) network, a SONET (Synchronous Optical Network) network, aSDH (Synchronous Digital Hierarchy) network, a wireless network and awireline network. In some embodiments, the network 104 may comprise awireless link, such as an infrared channel or satellite band. Thetopology of the network 104 may be a bus, star, or ring networktopology. The network 104 may be of any such network topology as knownto those ordinarily skilled in the art capable of supporting theoperations described herein. The network may comprise mobile telephonenetworks utilizing any protocol or protocols used to communicate amongmobile devices, including AMPS, TDMA, CDMA, GSM, GPRS or UMTS. In someembodiments, different types of data may be transmitted via differentprotocols. In other embodiments, the same types of data may betransmitted via different protocols.

In some embodiments, the system may include multiple, logically-groupedservers 106. In one of these embodiments, the logical group of serversmay be referred to as a server farm 38 or a machine farm 38. In anotherof these embodiments, the servers 106 may be geographically dispersed.In other embodiments, a machine farm 38 may be administered as a singleentity. In still other embodiments, the machine farm 38 includes aplurality of machine farms 38. The servers 106 within each machine farm38 can be heterogeneous—one or more of the servers 106 or machines 106can operate according to one type of operating system platform (e.g.,WINDOWS NT, manufactured by Microsoft Corp. of Redmond, Wash.), whileone or more of the other servers 106 can operate on according to anothertype of operating system platform (e.g., Unix or Linux).

In one embodiment, servers 106 in the machine farm 38 may be stored inhigh-density rack systems, along with associated storage systems, andlocated in an enterprise data center. In this embodiment, consolidatingthe servers 106 in this way may improve system manageability, datasecurity, the physical security of the system, and system performance bylocating servers 106 and high performance storage systems on localizedhigh performance networks. Centralizing the servers 106 and storagesystems and coupling them with advanced system management tools allowsmore efficient use of server resources.

The servers 106 of each machine farm 38 do not need to be physicallyproximate to another server 106 in the same machine farm 38. Thus, thegroup of servers 106 logically grouped as a machine farm 38 may beinterconnected using a wide-area network (WAN) connection or ametropolitan-area network (MAN) connection. For example, a machine farm38 may include servers 106 physically located in different continents ordifferent regions of a continent, country, state, city, campus, or room.Data transmission speeds between servers 106 in the machine farm 38 canbe increased if the servers 106 are connected using a local-area network(LAN) connection or some form of direct connection. Additionally, aheterogeneous machine farm 38 may include one or more servers 106operating according to a type of operating system, while one or moreother servers 106 execute one or more types of hypervisors rather thanoperating systems. In these embodiments, hypervisors may be used toemulate virtual hardware, partition physical hardware, virtualizephysical hardware, and execute virtual machines that provide access tocomputing environments. Hypervisors may include those manufactured byVMWare, Inc., of Palo Alto, Calif.; the Xen hypervisor, an open sourceproduct whose development is overseen by Citrix Systems, Inc.; theVirtualServer or virtual PC hypervisors provided by Microsoft or others.

In order to manage a machine farm 38, at least one aspect of theperformance of servers 106 in the machine farm 38 should be monitored.Typically, the load placed on each server 106 or the status of sessionsrunning on each server 106 is monitored. In some embodiments, acentralized service may provide management for machine farm 38. Thecentralized service may gather and store information about a pluralityof servers 106, respond to requests for access to resources hosted byservers 106, and enable the establishment of connections between clientmachines 102 and servers 106.

Management of the machine farm 38 may be de-centralized. For example,one or more servers 106 may comprise components, subsystems and modulesto support one or more management services for the machine farm 38. Inone of these embodiments, one or more servers 106 provide functionalityfor management of dynamic data, including techniques for handlingfailover, data replication, and increasing the robustness of the machinefarm 38. Each server 106 may communicate with a persistent store and, insome embodiments, with a dynamic store.

Server 106 may be a file server, application server, web server, proxyserver, appliance, network appliance, gateway, gateway, gateway server,virtualization server, deployment server, SSL VPN server, or firewall.In one embodiment, the server 106 may be referred to as a remote machineor a node. In another embodiment, a plurality of nodes 290 may be in thepath between any two communicating servers.

In one embodiment, the server 106 provides the functionality of a webserver. In another embodiment, the server 106 a receives requests fromthe client 102, forwards the requests to a second server 206 b andresponds to the request by the client 102 with a response to the requestfrom the server 106 b. In still another embodiment, the server 106acquires an enumeration of applications available to the client 102 andaddress information associated with a server 106′ hosting an applicationidentified by the enumeration of applications. In yet anotherembodiment, the server 106 presents the response to the request to theclient 102 using a web interface. In one embodiment, the client 102communicates directly with the server 106 to access the identifiedapplication. In another embodiment, the client 102 receives output data,such as display data, generated by an execution of the identifiedapplication on the server 106.

The client 102 and server 106 may be deployed as and/or executed on anytype and form of computing device, such as a computer, network device orappliance capable of communicating on any type and form of network andperforming the operations described herein. FIGS. 1B and 1C depict blockdiagrams of a computing device 100 useful for practicing an embodimentof the client 102 or a server 106. As shown in FIGS. 1B and 1C, eachcomputing device 100 includes a central processing unit 121, and a mainmemory unit 122. As shown in FIG. 1B, a computing device 100 may includea storage device 128, an installation device 116, a network interface118, an I/O controller 123, display devices 124 a-102 n, a keyboard 126and a pointing device 127, such as a mouse. The storage device 128 mayinclude, without limitation, an operating system, software, and asoftware of a demand side platform 120. As shown in FIG. 1C, eachcomputing device 100 may also include additional optional elements, suchas a memory port 103, a bridge 170, one or more input/output devices 130a-130 n (generally referred to using reference numeral 130), and a cachememory 140 in communication with the central processing unit 121.

The central processing unit 121 is any logic circuitry that responds toand processes instructions fetched from the main memory unit 122. Inmany embodiments, the central processing unit 121 is provided by amicroprocessor unit, such as: those manufactured by Intel Corporation ofMountain View, Calif.; those manufactured by Motorola Corporation ofSchaumburg, Ill.; those manufactured by Transmeta Corporation of SantaClara, Calif.; the RS/6000 processor, those manufactured byInternational Business Machines of White Plains, N.Y.; or thosemanufactured by Advanced Micro Devices of Sunnyvale, Calif. Thecomputing device 100 may be based on any of these processors, or anyother processor capable of operating as described herein.

Main memory unit 122 may be one or more memory chips capable of storingdata and allowing any storage location to be directly accessed by themicroprocessor 121, such as Static random access memory (SRAM), BurstSRAM or SynchBurst SRAM (BSRAM), Dynamic random access memory (DRAM),Fast Page Mode DRAM (FPM DRAM), Enhanced DRAM (EDRAM), Extended DataOutput RAM (EDO RAM), Extended Data Output DRAM (EDO DRAM), BurstExtended Data Output DRAM (BEDO DRAM), Enhanced DRAM (EDRAM),synchronous DRAM (SDRAM), JEDEC SRAM, PC 100 SDRAM, Double Data RateSDRAM (DDR SDRAM), Enhanced SDRAM (ESDRAM), SyncLink DRAM (SLDRAM),Direct Rambus DRAM (DRDRAM), or Ferroelectric RAM (FRAM). The mainmemory 122 may be based on any of the above described memory chips, orany other available memory chips capable of operating as describedherein. In the embodiment shown in FIG. 1B, the processor 121communicates with main memory 122 via a system bus 150 (described inmore detail below). FIG. 1C depicts an embodiment of a computing device100 in which the processor communicates directly with main memory 122via a memory port 103. For example, in FIG. 1C the main memory 122 maybe DRDRAM.

FIG. 1C depicts an embodiment in which the main processor 121communicates directly with cache memory 140 via a secondary bus,sometimes referred to as a backside bus. In other embodiments, the mainprocessor 121 communicates with cache memory 140 using the system bus150. Cache memory 140 typically has a faster response time than mainmemory 122 and is typically provided by SRAM, BSRAM, or EDRAM. In theembodiment shown in FIG. 1C, the processor 121 communicates with variousI/O devices 130 via a local system bus 150. Various buses may be used toconnect the central processing unit 121 to any of the I/O devices 130,including a VESA VL bus, an ISA bus, an EISA bus, a MicroChannelArchitecture (MCA) bus, a PCI bus, a PCI-X bus, a PCI-Express bus, or aNuBus. For embodiments in which the I/O device is a video display 124,the processor 121 may use an Advanced Graphics Port (AGP) to communicatewith the display 124. FIG. 1C depicts an embodiment of a computer 100 inwhich the main processor 121 communicates directly with I/O device 130 bvia HYPERTRANSPORT, RAPIDIO, or INFINIBAND communications technology.FIG. 1C also depicts an embodiment in which local busses and directcommunication are mixed: the processor 121 communicates with I/O device130 a using a local interconnect bus while communicating with I/O device130 b directly.

A wide variety of I/O devices 130 a-130 n may be present in thecomputing device 100. Input devices include keyboards, mice, trackpads,trackballs, microphones, dials, and drawing tablets. Output devicesinclude video displays, speakers, inkjet printers, laser printers, anddye-sublimation printers. The I/O devices may be controlled by an I/Ocontroller 123 as shown in FIG. 1B. The I/O controller may control oneor more I/O devices such as a keyboard 126 and a pointing device 127,e.g., a mouse or optical pen. Furthermore, an I/O device may alsoprovide storage and/or an installation medium 116 for the computingdevice 100. In still other embodiments, the computing device 100 mayprovide USB connections (not shown) to receive handheld USB storagedevices such as the USB Flash Drive line of devices manufactured byTwintech Industry, Inc. of Los Alamitos, Calif.

Referring again to FIG. 1B, the computing device 100 may support anysuitable installation device 116, such as a floppy disk drive forreceiving floppy disks such as 3.5-inch, 5.25-inch disks or ZIP disks, aCD-ROM drive, a CD-R/RW drive, a DVD-ROM drive, a flash memory drive,tape drives of various formats, USB device, hard-drive or any otherdevice suitable for installing software and programs. The computingdevice 100 may further comprise a storage device, such as one or morehard disk drives or redundant arrays of independent disks, for storingan operating system and other related software, and for storingapplication software programs such as any program related to thesoftware 120 for the demand side platform. Optionally, any of theinstallation devices 116 could also be used as the storage device.Additionally, the operating system and the software can be run from abootable medium, for example, a bootable CD, such as KNOPPIX, a bootableCD for GNU/Linux that is available as a GNU/Linux distribution fromknoppix.net.

Furthermore, the computing device 100 may include a network interface118 to interface to the network 104 through a variety of connectionsincluding, but not limited to, standard telephone lines, LAN or WANlinks (e.g., 802.11, T1, T3, 56 kb, X.25, SNA, DECNET), broadbandconnections (e.g., ISDN, Frame Relay, ATM, Gigabit Ethernet,Ethernet-over-SONET), wireless connections, or some combination of anyor all of the above. Connections can be established using a variety ofcommunication protocols (e.g., TCP/IP, IPX, SPX, NetBIOS, Ethernet,ARCNET, SONET, SDH, Fiber Distributed Data Interface (FDDI), RS232, IEEE802.11, IEEE 802.11a, IEEE 802.11b, IEEE 802.11g, CDMA, GSM, WiMax anddirect asynchronous connections). In one embodiment, the computingdevice 100 communicates with other computing devices 100′ via any typeand/or form of gateway or tunneling protocol such as Secure Socket Layer(SSL) or Transport Layer Security (TLS), or the Citrix Gateway Protocolmanufactured by Citrix Systems, Inc. of Ft. Lauderdale, Fla. The networkinterface 118 may comprise a built-in network adapter, network interfacecard, PCMCIA network card, card bus network adapter, wireless networkadapter, USB network adapter, modem or any other device suitable forinterfacing the computing device 100 to any type of network capable ofcommunication and performing the operations described herein.

In some embodiments, the computing device 100 may comprise or beconnected to multiple display devices 124 a-124 n, which each may be ofthe same or different type and/or form. As such, any of the I/O devices130 a-130 n and/or the I/O controller 123 may comprise any type and/orform of suitable hardware, software, or combination of hardware andsoftware to support, enable or provide for the connection and use ofmultiple display devices 124 a-124 n by the computing device 100. Forexample, the computing device 100 may include any type and/or form ofvideo adapter, video card, driver, and/or library to interface,communicate, connect or otherwise use the display devices 124 a-124 n.In one embodiment, a video adapter may comprise multiple connectors tointerface to multiple display devices 124 a-124 n. In other embodiments,the computing device 100 may include multiple video adapters, with eachvideo adapter connected to one or more of the display devices 124 a-124n. In some embodiments, any portion of the operating system of thecomputing device 100 may be configured for using multiple displays 124a-124 n. In other embodiments, one or more of the display devices 124a-124 n may be provided by one or more other computing devices, such ascomputing devices 100 a and 100 b connected to the computing device 100,for example, via a network. These embodiments may include any type ofsoftware designed and constructed to use another computer's displaydevice as a second display device 124 a for the computing device 100.One ordinarily skilled in the art will recognize and appreciate thevarious ways and embodiments that a computing device 100 may beconfigured to have multiple display devices 124 a-124 n.

In further embodiments, an I/O device 130 may be a bridge between thesystem bus 150 and an external communication bus, such as a USB bus, anApple Desktop Bus, an RS-232 serial connection, a SCSI bus, a FireWirebus, a FireWire 800 bus, an Ethernet bus, an AppleTalk bus, a GigabitEthernet bus, an Asynchronous Transfer Mode bus, a HIPPI bus, a SuperHIPPI bus, a SerialPlus bus, a SCl/LAMP bus, a FibreChannel bus, aSerial Attached small computer system interface bus, or a HDMI bus.

A computing device 100 of the sort depicted in FIGS. 1B and 1C typicallyoperates under the control of operating systems, which controlscheduling of tasks and access to system resources. The computing device100 can be running any operating system such as any of the versions ofthe MICROSOFT WINDOWS operating systems, the different releases of theUnix and Linux operating systems, any version of the MAC OS forMacintosh computers, any embedded operating system, any real-timeoperating system, any open source operating system, any proprietaryoperating system, any operating systems for mobile computing devices, orany other operating system capable of running on the computing deviceand performing the operations described herein. Typical operatingsystems include, but are not limited to: WINDOWS 3.x, WINDOWS 95,WINDOWS 98, WINDOWS 2000, WINDOWS NT 3.51, WINDOWS NT 4.0, WINDOWS CE,WINDOWS MOBILE, WINDOWS XP, and WINDOWS VISTA, all of which aremanufactured by Microsoft Corporation of Redmond, Wash.; MAC OS,manufactured by Apple Computer of Cupertino, Calif.; OS/2, manufacturedby International Business Machines of Armonk, N.Y.; and Linux, afreely-available operating system distributed by Caldera Corp. of SaltLake City, Utah, or any type and/or form of a Unix operating system,among others.

The computer system 100 can be any workstation, telephone, desktopcomputer, laptop or notebook computer, server, handheld computer, mobiletelephone or other portable telecommunications device, media playingdevice, a gaming system, mobile computing device, or any other typeand/or form of computing, telecommunications or media device that iscapable of communication. The computer system 100 has sufficientprocessor power and memory capacity to perform the operations describedherein. For example, the computer system 100 may comprise a device ofthe IPOD family of devices manufactured by Apple Computer of Cupertino,Calif., a PLAYSTATION 2, PLAYSTATION 3, or PERSONAL PLAYSTATION PORTABLE(PSP) device manufactured by the Sony Corporation of Tokyo, Japan, aNINTENDO DS, NINTENDO GAMEBOY, NINTENDO GAMEBOY ADVANCED or NINTENDOREVOLUTION device manufactured by Nintendo Co., Ltd., of Kyoto, Japan,or an XBOX or XBOX 360 device manufactured by the Microsoft Corporationof Redmond, Wash.

In some embodiments, the computing device 100 may have differentprocessors, operating systems, and input devices consistent with thedevice. For example, in one embodiment, the computing device 100 is aTREO 180, 270, 600, 650, 680, 700p, 700w, or 750 smart phonemanufactured by Palm, Inc. In some of these embodiments, the TREO smartphone is operated under the control of the PalmOS operating system andincludes a stylus input device as well as a five-way navigator device.

In other embodiments the computing device 100 is a mobile device, suchas a JAVA-enabled cellular telephone or personal digital assistant(PDA), such as the i55sr, i58sr, i85s, i88s, i90c, i95cl, or the im1100,all of which are manufactured by Motorola Corp. of Schaumburg, Ill., the6035 or the 7135, manufactured by Kyocera of Kyoto, Japan, or the i300or i330, manufactured by Samsung Electronics Co., Ltd., of Seoul, Korea.In some embodiments, the computing device 100 is a mobile devicemanufactured by Nokia of Finland, or by Sony Ericsson MobileCommunications AB of Lund, Sweden.

In still other embodiments, the computing device 100 is a Blackberryhandheld or smart phone, such as the devices manufactured by Research InMotion Limited, including the Blackberry 7100 series, 8700 series, 7700series, 7200 series, the Blackberry 7520, or the Blackberry Pearl 8100.In yet other embodiments, the computing device 100 is a smart phone,Pocket PC, Pocket PC Phone, or other handheld mobile device supportingMicrosoft Windows Mobile Software. Moreover, the computing device 100can be any workstation, desktop computer, laptop or notebook computer,server, handheld computer, mobile telephone, any other computer, orother form of computing or telecommunications device that is capable ofcommunication and that has sufficient processor power and memorycapacity to perform the operations described herein.

In some embodiments, the computing device 100 is a digital audio player.In one of these embodiments, the computing device 100 is a digital audioplayer such as the Apple IPOD, IPOD Touch, IPOD NANO, and IPOD SHUFFLElines of devices, manufactured by Apple Computer of Cupertino, Calif. Inanother of these embodiments, the digital audio player may function asboth a portable media player and as a mass storage device. In otherembodiments, the computing device 100 is a digital audio player such asthe DigitalAudimpression opportunity layer Select MP3 players,manufactured by Samsung Electronics America, of Ridgefield Park, N.J.,or the Motorola m500 or m25 Digital Audio Players, manufactured byMotorola Inc. of Schaumburg, Ill. In still other embodiments, thecomputing device 100 is a portable media player, such as the Zen VisionW, the Zen Vision series, the Zen Portable Media Center devices, or theDigital MP3 line of MP3 players, manufactured by Creative TechnologiesLtd. In yet other embodiments, the computing device 100 is a portablemedia player or digital audio player supporting file formats including,but not limited to, MP3, WAV, M4A/AAC, WMA Protected AAC, RIFF, Audibleaudiobook, Apple Lossless audio file formats and .mov, .m4v, and.mp4MPEG-4 (H.264/MPEG-4 AVC) video file formats.

In some embodiments, the communications device 102 includes acombination of devices, such as a mobile phone combined with a digitalaudio player or portable media player. In one of these embodiments, thecommunications device 102 is a smartphone, for example, an iPhonemanufactured by Apple Computer, or a Blackberry device, manufactured byResearch In Motion Limited. In yet another embodiment, thecommunications device 102 is a laptop or desktop computer equipped witha web browser and a microphone and speaker system, such as a telephonyheadset. In these embodiments, the communications devices 102 areweb-enabled and can receive and initiate phone calls. In otherembodiments, the communications device 102 is a Motorola RAZR orMotorola ROKR line of combination digital audio players and mobilephones.

In some embodiments, the status of one or more machines 102, 106 in thenetwork 104 is monitored, generally as part of network management. Inone of these embodiments, the status of a machine may include anidentification of load information (e.g., the number of processes on themachine, CPU and memory utilization), of port information (e.g., thenumber of available communication ports and the port addresses), or ofsession status (e.g., the duration and type of processes, and whether aprocess is active or idle). In another of these embodiments, thisinformation may be identified by a plurality of metrics, and theplurality of metrics can be applied at least in part towards decisionsin load distribution, network traffic management, and network failurerecovery as well as any aspects of operations of the present solutiondescribed herein. Aspects of the operating environments and componentsdescribed above will become apparent in the context of the systems andmethods disclosed herein.

B. Demand Side Platform

Online publishers typically provide or allocate areas or portions oftheir web pages for advertising (or “ad”) purposes. These areas orportions are generally differentiated from content created or publishedby the publishers. These areas or portions are hereafter sometimesgenerally referred to as impression opportunities. Some of theseimpression opportunities are available for advertising products,services, or businesses not directly provided by or related to theonline publishers. In some embodiments, these impression opportunitiesare available to advertisers for a price.

Impression opportunities may include any form or type of space or regionon a web page. This space or region may overlap with or reside within(or as part of) content on the page (e.g., locations for banners, adblocks, sponsored listings, margin ads and flash displays). Impressionopportunities may be temporal, e.g., associated with a time slot (e.g.,screening of a sponsored video footage prior to a requested screening,or available on a part of a day referred to as a day part). In someembodiments, an impression opportunity may sometimes not directly resideon a webpage. For example and in one embodiment, an impressionopportunity may be generated from a webpage, such as due to an useraction or some other trigger. For example, a pop-up may be generatedwhen a webpage is loaded onto a browser. A window display or otherwidget may be generated responsive to a mouse-over. In some embodiments,an impression opportunity may include one or more elements such as abanner and an animated flash display extending from the banner boundary.In some embodiments, elements that may individually qualify as animpression opportunity may be collectively packaged as a singleimpression opportunity. In some embodiments, an impression opportunityis sometimes referred to as “inventory” (e.g., of a publisher).

Impression opportunities are sometimes offered directly to advertisers.In some embodiments, publishers may offer impression opportunitiesthrough one or more ad networks and/or ad exchanges. An ad network or adexchange may consolidate and/or manage impression opportunities onbehalf of a publisher. An ad network or ad exchange may consolidateand/or manage impression opportunities across a plurality of publishers.In particular, an ad exchange may provide a platform for buying andselling advertising impressions. An ad exchange may provide services(e.g., for trading impression opportunities) beyond that of ad networks.In some embodiments, ad networks and ad exchanges have distinct featuresas defined by the Interactive Advertising Bureau (IAB). Ad exchanges mayinclude, but is not limited to Microsoft AdECN, Yahoo Right Media, andDoubleClick, a Google subsidiary.

In some embodiments, an ad exchange operates as a platform, interface ormediator for matching an impression opportunity buyer with a seller. Asthe online ad market becomes more automated and exchange-driven, adexchanges may provide better efficiency and value to buyers and sellersthan ad networks. As an ad exchange attempts to broker a transaction,the buy side (e.g., advertiser or ad agency) may make a bid and the sellside (e.g., publisher) may set a floor for accepting a bid or accept thehighest bid from multiple sellers. Due to the benefits provided by adexchanges, ad exchanges may command a relatively large share of theprofit from transacting an impression opportunity. This may beespecially true as ad rates or impression opportunity rates drop. Insome cases, ad agencies may see their margins drop, e.g., to 10% orlower. Taking more control of the buying process, such as by using themethods and systems disclosed herein, may change such a trend.

Moreover, in some embodiments, an ad exchange brokering a transactionbetween a seller and multiple buyers may provide more value to theseller than to the buyers. In other embodiments, an ad exchange mayrepresent only a limited pool of impression opportunities to a buyer.Furthermore, an ad exchange may offer less competitive terms to a buyerfor a given impression opportunity as compared to another ad exchange.The transaction interface provided by an ad exchange to a buyer mayinclude unique and/or proprietary processes, specific configuration ofimpression opportunity-related information, non-uniform transactionterms and/or parameters. Due to the non-uniform transaction interfaceprovided by each ad exchange, a seller may not be able to determine apreferred ad exchange(s) to work with. This can be true in general, fora particular ad campaign, or for a particular impression opportunitybid. In some embodiments, the systems and methods disclosed hereinprovide a single interface for a buyer (e.g., an ad agency) to access aplurality of ad exchanges, and integrate multiple pools of impressionopportunities from these ad exchanges for bidding by the buyer.

Embodiments of the methods and systems of a demand side platformdisclosed herein may address the issues described above. The platform ofthe present disclosure provides the following one or more featuresand/or combination of the features that characterize the platform as ademand side platform:

-   -   (a) the platform integrates and interfaces to multiple exchanges        to provide normalized access to a cross-exchange spectrum of        disparate and different supply sources;    -   (b) the platform integrates and interfaces to third party ad        servers for reporting on performance and/or operations;    -   (c) the platform calculates daily impression estimates for the        multiple exchanges and campaigns;    -   (d) the platform provides an interface to match buyer demand to        supplier supply by matching against the inventory of        impressions;    -   (e) the platform provides a system to trade demand to supply to        connect a plurality of buyers (demand) across a plurality of        disparate sellers (supply)    -   (f) the platform provides reporting of performance of an ad        campaign of a buyer across a cross-exchange spectrum of        suppliers.    -   (g) the platform provides flighting: a period of time in which a        defined bid price, daily spend goal and frequency cap are        defined.

Embodiments of the demand side platform may include any combination ofthe above-mentioned features. With these embodiments of the demand sideplatform, the present disclosure provides performance, simplicity,processing algorithms and reporting not previously offered in a singleintegrated solution and service. Embodiments of the demand side platformmay be offered, delivered or deployed as a software, a service or amanaged service, application or platform. Embodiments of the demand sideplatform may be offered, delivered or deployed as an outsourced service.In some embodiments, the demand side platform may be offered, deliveredor deployed as a combination of managed and outsourced service.

Referring now to FIG. 2A, embodiments of a system for a demand sideplatform which may integrate multiple pools of impression opportunitiesfrom multiple ad exchanges for bidding is shown. In brief summary, thesystem shows one or more impression opportunities available and/ordelivered via one or more ad exchanges for bidding by one or more adagencies. Each ad agency may represent one or more clients. The systemfurther includes a Demand Side Platform (DSP) for interfacing betweenthe one or more ad agencies and the one or more ad exchanges. The DSPdetermining for the ad agencies and/or the clients which impressionopportunity to bid and how to bid based on information provided from thebuy side and sell side.

In further details of FIG. 2A, each ad agency may represent one or moreclients. Client entities interested in impression opportunities maycomprise an individual, company, organization or a groups of individualwith shared interests. An ad agency may design and/or implement an adcampaign on behalf of a client. The ad agency may further procure or buyimpression opportunities based on the advertising campaign on behalf ofthe client. In some embodiments, an ad agency and/or one or more clientsthe agency represents may collectively or individually be referred to asan advertiser. In one of these embodiments, an advertiser includes an adagency and a client the agency represents. A client may be an advertiserthat directly uses the DSP to procure impression opportunities, e.g.,without using an ad agency. In some embodiments, an ad agency may use aDSP to concurrently and/or independently run ad campaigns for one ormore clients. In some embodiments, an ad exchange may interface with anadvertiser via a DSP. In other embodiments, an ad exchange may interfacedirectly with an advertiser that uses a DSP to process informationprovided by the ad exchange.

A DSP may be implemented in hardware or a combination of hardware andsoftware. The DSP may be built and/or configured for supporting orproviding impression opportunity analyses and/or transactions. In someembodiments, a DSP is built and configured for providing buy sideservices for impression opportunities. A DSP may provide automation forimpression opportunity workflow (e.g., designing ad campaigns andapplying these to multiple ad exchanges), supply integration (e.g.,interfacing with multiple ad exchanges and other supply partners tonormalize pools of impression opportunity for analysis and bidding), andinsight and analytics (e.g., quantitative analysis in determiningoutgoing bids and reviewing performance).

The DSP may include any module, script, program, agent, state machine,component or set of executable instructions executing on one or moremachines or servers 106. The DSP technology stack may incorporate opensource and/or commercial code platforms, including but not limited to:Flex/Catalysts (e.g., implemented in the DSP user interface andmiddleware in some embodiments), Perl (e.g., implemented in theapplication layer and business logic in some embodiments), C/C++(e.g.,implemented in the bidding module and/or brain engine in someembodiments), Netezza/PostGreSQL (e.g., implemented in DSP datawarehousing or data marts in some embodiments). These code platforms, asimplemented in the DSP system, can support agile and interactivedevelopment of the system. In some embodiments, the DSP includes aself-monitoring and/or self-healing framework. The DSP may includeapplication programming interfaces (APIs) into some or all subsystems ofthe DSP.

The one or more machines or servers 106 providing the DSP may includeone or more server farms 38, for example incorporating features ofserver farms 38 described above in connection with FIG. 1A. The DSPhardware may interface with other network components via any type orform of communication protocol, including standard, proprietary andcustom protocols. The DSP may have components operating at one or morelayers of the network stack, such as the transport layer. The DSP mayoperate as an intermediary, logically and/or physically, between one ormore ad exchanges and one or more advertisers (e.g., ad agencies).

In certain embodiments, a DSP may be referred as a demand side service.In some embodiments, the DSP may include one or more services,subsystems, modules and/or applications hosted by a provider and/or anadvertiser. For example and in one embodiment, the DSP may include aservice or application engine hosted on one or more servers of theadvertiser and/or a third party. The third party may be a server farm orhardware provider and/or service provider. The DSP may include aservice, module and/or application dedicated for an advertiser, e.g., tointerface that advertiser with one or more ad exchanges. For example andin one embodiment, a DSP may include services, applications and/orhardware leased and/or owned by an advertiser. In some embodiments, anad exchange may provide a DSP or some features of a DSP to anadvertiser, e.g., for ad campaign planning. Any of the systems and/orfeatures associated with a DSP may be provided to advertisers and/or adexchanges for a fee, e.g., on a per use basis (e.g., online access), foran access/lease period (e.g., software license), and/or for purchase(e.g., custom or configured hardware).

The DSP may provide an advertiser access to a plurality of impressionopportunities provided via different providers (e.g., publishers). Theplurality of impression opportunities may include one or more pools ofimpression opportunities. For example and in one embodiment, a pool ofimpression opportunities may include impression opportunities from apublisher, a group of publishers, an ad exchange, and/or an ad network.In some embodiments, a pool of impression opportunities comprisesimpression opportunities across discrete and disparate supply sources.Certain ad networks and/or ad exchanges may control, distribute, offer,administer or otherwise manage one or more pools of impressionopportunities. In some embodiments, certain impression opportunities orpools of impression opportunities may only be available via a specificad network or ad exchange. The DSP may function as an interface betweena plurality of impression opportunity providers (or sellers) and anadvertiser (buyer). The DSP may offer a single interface, point ofaccess, and/or relationship to a buyer, e.g., to simplify transactionsand/or analyses associated with a plurality of sellers. In someembodiments, the pools of impression opportunities may correspond todifferent types or categories of impression opportunities, e.g.,impression opportunities associated with a segment, channel, particulartype of website or premium level, mouse-over vs. page-embeddedimpression opportunities, etc.

The DSP may process or analyze information associated with variousimpression opportunities and normalize these into metrics for comparisonagainst goals set by advertisers. The DSP may normalize the informationacross impression opportunities, pools of impression opportunities,and/or ad exchanges. In some embodiments, the DSP may statisticallyand/or intelligently process or analyze the information to help anadvertiser customize, determine or develop an advertising campaign basedon the advertiser's goals. The DSP may dynamically update the metrics tohelp an advertiser adjust or implement advertising campaigns based onthe goals. For example, the DSP may determine (e.g., via an impressioncalculator and/or a bidding module of the DSP) an estimate of dailyimpression opportunities across the plurality of impression opportunityproviders to identify an appropriate advertising campaign strategy. Themethods and systems described herein may use the normalized metrics tobid for impression opportunities, e.g., according to the advertisingcampaigns developed.

In some embodiments, a DSP may provide services to one or moreadvertisers in parallel, in sequence, on demand or otherwise. Forexample and in one embodiment, a single DSP may perform analysis and/ortransactions for one or more advertisers concurrently and/orsequentially. An analysis may include any type or form of dataprocessing, such as any statistical, algorithmic or other intelligentcomputation, profiling and/or prediction of impression opportunityinformation that may be useful in the formulation of ad strategy,campaign and/or bidding across one or more ad exchanges. A transactionmay include any type or form of operation associated with bidding,trading, and/or procuring impression opportunities. Each analysis and/ortransaction may be independent of another analysis and/or transaction ofthe same or different advertiser. For example, in some embodiments, ananalysis may account for one or more transactions taking place at thesame time. In certain embodiments, a transaction may affect or competewith another transaction. A transaction may be assigned a differentpriority and/or be configured relative to another transaction, e.g., topotentially effect a certain result or a different result. In oneembodiment, such as between transactions of a same advertiser, atransaction (e.g., impression opportunity bid) may be processed tooptimize or improve the chances or outcome of another transaction. Inanother embodiment, such as between transactions of differentadvertisers and/or ad campaigns, a transaction may be processed blindly,fairly and/or independently of another transaction.

In some embodiments, a plurality of DSPs may operate in parallel. Insome embodiments, the plurality of DSP supporting different advertisers.A transaction may affect or compete with another transaction fromanother advertiser or DSP. In certain embodiments, an advertiser mayoperate a plurality of DSPs in parallel, either using the same adcampaigns or using different ad campaigns. For example and in oneembodiment, an advertiser may be evaluating one DSP against another, orcomparing one ad campaign against another. A different DSP may help thesame advertiser (e.g., ad agency and/or client) develop a different adcampaign. A different DSP may provide the same advertiser access todifferent ad exchanges and/or information.

As a single interface across a plurality of ad exchanges, a DSP canreceive and process any type or form of information supplied via the adexchanges. For example, and as depicted in the embodiment shown in FIG.2G, each ad exchange and/or publisher may supply different types ofinformation, similar information in a different format, data structureor granularity, using different communication protocols or standards,and at different time instances or intervals. In some embodiments, theinformation provided via some ad exchanges may conform at least in partto some standards. In certain embodiments, the information provided byan ad exchange may be specific to the ad exchange's custom orsemi-custom interface. The availability and type of information providedvia ad exchanges may vary, e.g., from publisher to publisher. In someembodiments, an ad exchange may process and/or convey information fromdifferent publishers differently. Some ad exchanges and/or publishersmay provide support for requesting or querying different types orgranularity of data. Information provided via ad exchanges may includesupply data with respect to impression opportunities, and user data.

User data may include any type or form of data related to a user of awebpage, website, web session and/or web application. Such userinformation may include geolocation or geographical (sometimes generallyreferred to as “geo”) information, system data, remarketing information,and third-party segment information. Geo information may includeinformation including but not limited to information related to the usernetwork, internet protocol (IP) address, access point (e.g., wifihotspot), geographical location and mobile tracking, and demographic andother geographical information system (GIS) data linked to the userlocation. System data may include any user information stored or trackedby the publisher or network, including but not limited to userpreferences, browsing and transaction history, and user deviceinformation. Some of these information may be tracked by cookies and/orAdware.

Third-party segment information may include information identifyingspecific audience segments with certain online shopping habits. A numberof companies, such as BlueKai, Exelate and Axciom, may provide suchinsights into the in-market shopping profiles of advertisers siteaudiences. Third-party segment information may include informationrelated to a conversion (e.g., pattern of user behavior and/oradvertising characteristics leading to a newsletter sign-up,registration, transaction, etc) as well as behavioral targeting datasourced or bought from ad networks. Advertisers can use pre-existingsegments or use the information provided to create custom audiencesegments, identify matching impression opportunities and reachprospects.

Remarketing information may include information including but notlimited to information related to tracking a user after the user hasleft a publisher's site with a goal of driving the user back to aclient's site to complete an action or transaction. Remarketinginformation may identify user or user attributes indicating past orpotential success in remarketing efforts. In addition to the above, userdata may include “IXI” data that provides measures of user wealth,income, spending, credit, investment style, share-of-wallet andshare-of-market.

Supply data may include any type or form of data related to impressionopportunities. Supply data may include information related to, but notlimited to the network, publisher, channel, ad size and daypart. Networkdata may include information including but not limited to informationrelated to the size, characteristics and audience reach of an ad networkassociated with an impression opportunity. Publisher data may includeinformation including but not limited to information related to thecontent and web traffic of a publisher or website offering an impressionopportunity. Publisher data may include an identifier of the publisherand/or website. Ad size may indicate the size of the impressionopportunity using any type or form of measure, e.g., digital imagedimensions by pixels, such as 300×250. Daypart information specifiesportions of the days during which the impression opportunity is offered,e.g., 12 pm-6 pm, 6 pm-9 pm, primetime, morning segment, late night,etc. Weekpart information may specify between weekend and weekday. Othertime-specific parts may be provided or defined.

Channel data may include information including but not limited toinformation related to the type and reach of a media channel associatedwith an impression opportunity. A channel may be a category of mediacontent targeting a specific audience. For example, channels may includecategories such as news, finance, women, men, etc. In some embodiments,a channel may be a media type, for example, rich media, in-stream video,search, banner, text links, e-mail spam, opt-in e-mail advertising,other trackable media. Media type channels may also include podcasts,mobile device content and RSS feeds.

A DSP can receive a variety of sell-side information received via adexchanges and normalize the information for a buyer or advertiser. TheDSP may have custom interfaces for communicating with each ad exchange,e.g., as depicted in the embodiment shown in FIG. 2G. Each custominterface may include standard and/or custom modules for receivingportions of information from the corresponding ad exchange. Each custominterface may support the appropriate communication protocol conversionor translation. Each custom interface may include filters for removingredundant and/or unsupported data received from an ad exchange or otherthird party providers (e.g., BlueKai). Each custom interface may includeany type or form of extract, translate and load (ETL) capabilities tocreate a set of data or parameters in normalized, standard or generic(hereafter generally referred to as “normalized”) form for thecorresponding ad exchange. The normalized set of parameters may includeone or more of geo, system, REM, third-party segment, IXI, publisher(ID), channel, ad size, weekpart and daypart data pertaining to animpression opportunity.

Referring now to FIG. 2B and in some embodiments, each set of sell-sideinformation received by a DSP may be associated with an impressionopportunity. In other embodiments, each set of sell-side informationreceived by a DSP is associated with a pool of impression opportunities,a publisher, an ad network, or an ad exchange. In some embodiments, theDSP includes at least one bidding engine or module (e.g., a MathBidmodule) for initiating bids to any of the ad exchanges, ad networks,supply partners and/or publishers. A bidding engine or module issometimes referred to as a bidder. A DSP may include any number of highperformance bidding modules. In some embodiments, the DSP biddingmodules can operate at 500,000 queries per second. A bidding module maybe configured to bid on every impression opportunity or on selectedimpression opportunities. A bidding module may bid on one or moreimpression opportunities for placement of an advertisement. A biddingmodule may be configured to bid one or more times on an impressionopportunity based on the corresponding impression opportunity provider'sresponse to the bid. A bidding module may be configured to bid one ormore times on an impression opportunity to try to achieve a successfulbid.

In certain embodiments, a bidding module may include or incorporate theone or more custom interfaces described above. The bidding module mayreceive sets of sell-side information via the custom interfaces. Thebidding module(s) may integrate all supply sources across real time,different APIs and bid sheet environments. The custom interfaces maynormalize each set of sell side information into sets of data that canbe processed by the bidding module and/or a brain engine of the DSP. Thenormalized sets of data may be stored in a data warehouse in someembodiments. The bidding modules may include a uber or master bidder,e.g., as depicted in FIGS. 2C and 2D. The master bidder may execute onbrain engine instructions and/or generated rule sets. The master biddermay load balance bids across one or more of the other biding modules(sometimes generally referred to as “bidders”). The brain engine mayconstantly update the bidders (e.g., via the master bidder) asstatistically significant variables are recognized and/or pockets ofperforming media or impression opportunities are unlocked.

The data warehouse may include a database management module for logging,tracking and managing the normalized sets of data. The databasemanagement module may be implemented in hardware or a combination ofhardware and software. The database management module may be built andconfigured for storing, retrieving, organizing and managing impressionopportunity-related information, including normalized sets of data orparameters. In some embodiments, the database management module is builtand configured for efficient and/or fast storing, retrieving, organizingand managing impression opportunity-related information. The databasemanagement module may include any module, script, program, agent,component or set of executable instructions executing on one or moremachines or servers 106.

The data warehouse may include one or more storage devices,incorporating features from embodiments of storage devices 128, 122, 140described above in connection with FIGS. 1B and 1C. Moreover, the datawarehouse may include data structures for storing and organizing thesets of normalized data. In certain embodiments, the data warehouseincludes or operates with a reporting module for processing routinereporting or requests for information. In some embodiments, the DSPsystem includes a massively parallel data warehouse, e.g., forprocessing high levels of impression opportunity transactions and/oranalysis. In one embodiment, the DSP data warehouse has a capacity of20TB or more. The DSP data warehouse may be built or configured tosupport massive data sets for reporting, optimization and insights. TheDSP data warehouse may be built or configured to integrate withthird-party systems and/or other data warehouses.

Referring to FIG. 2C, one embodiment of a platform architecture for theDSP system is shown. In brief summary, the DSP system includes aninterface layer, a core layer, an optimization layer, an integrationlayer and a data layer. The data layer may include the DSP datawarehouse discussed above. Bidding modules are depicted as the uberbidder and bidders in the core layer. The core layers may also include acookies module and a MathTag module. The cookie module may generateand/or provide cookies to generate user data. The cookie module maycommunicate with server-side cookies to receive user data. The MathTagmodule may provide functionality for managing pixels and/or trackingcode. The MathTag module may provide functionality for serving and/ortracking pixels or REM segment users.

The DSP integration layer may include a number of modules, including butnot limited to Supply and Workflow Integration (SWI), creativemanagement and data integration. In some embodiments, the SWI moduleprocesses and/or integrates supply data (from impression opportunitysellers such as ad exchanges). The SWI module may also process and/orintegrate workflow data. These data can include third-party analyticsdata, trafficking data and non-real-time-bidding (non-RTB) data. Thesedata may include system data, such as campaign management data. The SWImodule may interface with the DSP data warehouse to retrieve data forprocessing and/or store data processed by the SWI module. The DSPintegration layer may include a creative management module for storing,creating, updating, organizing, or otherwise managing creatives. Thecreative management module may manage a library of creatives.

The data integration module may process and/or integrate any type orform of data from first, second and/or third parties, such as anadvertiser (e.g., ad agency and/or client), a publisher, an ad exchange,ad network, third-parties like BlueKai, etc. The data integration modulemay comprise, interoperate or interface with the one or more custominterfaces described above and in connection with FIG. 2G. The dataintegration module may operate with a ETL module to extract andnormalize data from various sources. The data integration module mayprovide specific data on demand. In some embodiments, the dataintegration module may provide custom data feeds to requestors. One ormore of the integration layer modules may operate with each other and/orwith the DSP data warehouse to provide data for use in the optimizationlayer and/or provide data requested by any requestor.

The DSP may include a brain engine for performing operations based onany portion of the data discussed above. In some embodiments, the brainengine may perform operations using data collected or generated by thecore layer. The brain engine may be implemented in hardware or acombination of hardware and software. The brain engine module mayinclude any module, script, program, agent, component or set ofexecutable instructions executing on one or more machines or servers106. The brain engine may be built and configured for quickly processingmassive data sets, applying machine learning against that data anddeploying learnt real-time data into bidders. The brain engine may beimplemented in the optimization layer of the DSP system.

The brain engine may include one or more processors, e.g., executing inparallel or substantially in parallel. In some embodiments, the brainengine includes a plurality of processing cores. In some embodiments,the brain engine includes distributed processing (e.g., across multipleserver farms). The capability for parallel processing can for example,support multi-scenario analysis in modeling a bidding process. In someembodiments, the brain engine incorporates cloud computing features. Insome embodiments, the DSP platform includes a distributed brain engineor a plurality of brain engines. The DSP platform may include aplurality of brain engines that can operate in a coordinated orcollaborative fashion. In other embodiments, the DSP platform mayinclude a plurality of brain engines that can operate independently.

In one embodiment, the brain engine includes a left brain component forperforming yield optimization (e.g., bidding success, competitive bidprices, REM success, low CPM, etc). In some embodiments, the left braincomponent can determine the Fair Market Value (FMV) of impressions basedon variables obtained via requests (e.g. HTTP) to supply partners and/orfrom third party data. In some embodiments, the left brain component candetermine FMV (fair market value) based on the data of past bidding andcampaign performance and operational data stores in the data warehouse.The brain engine may includes a right brain component for handlingoperations such as targeting (e.g., targeting segments, channels,dayparts), pacing (e.g., controlling spend rate with respect to bidding)and market dynamics (e.g., updating bid rules according to bid resultsand/or market information). In some embodiments, the right braincomponent can adjust FMV bids based on targeting, pacing and/or marketdynamics.

In some embodiments, the brain engine may be built and configured forone or more of: (i) retrieving appropriate sets of normalized data fromthe data warehouse and/or the bidding module, (ii) comparing and rankingimpression opportunities based on the sets of normalized data, (iii)grouping impression opportunities, e.g., based on the comparison and/orranking, (iv) generating one or more rules for bidding on impressionopportunities, (v) generating an initial bidding prediction based on theone or more rules and/or sets of normalized data, (vi) adapts the one ormore rules based on bidding results, and (vii) optimizes the one or morerules. The brain engine may generate an initial set of bidding rules forthe bidding module to bid for impression opportunities. In someembodiments, the bidding module executes one or more initial bidswithout using any bidding rules. The bidding module may forward orsummarize bidding results to the brain engine for developing and/orrefining bidding rules. In some embodiments, the brain engine exports arule set optimized according to bidding results. The brain engine mayexport or provide the rule set to the bidding module. In certainembodiments, the brain engine dynamically updates the bidding rulesbased on new bidding results. The brain engine may dynamically updatebidding rules for an ad campaign to the bidding module. The brain enginemay, in some embodiments, export an updated rule set to the biddingmodule based on one or more of: an export schedule, a change orsubstantial change in the bidding rules, a change in the correspondingad campaign, or some other triggering event.

Referring again to FIG. 2A, the brain engine generates bidding rules foran online ad campaign based in part on constraints and/or goals providedby an advertiser. In some embodiments, a client or advertiser providesone or more goals for an ad campaign. Goals may include a budget cap ortarget for an effective cost per Action (eCPA or CPA). An eCPA may beused as a measure of the effectiveness of impression opportunitiesprocured by the advertiser. For example, an ad campaign may involvemultiple bids over a plurality of impression opportunities. To determinethe eCPA, the bid price for successful bids may be summed over a periodof time and divided by the number of desired user actions (e.g., a formsubmission or purchase) linked to an advertisement successfully bid. Thelarger the number of desired user actions, the more successful the adcampaign is as the eCPA lowered. Ad campaign goals may also specify thebudget for the ad campaign over a period of time. Budget spending for anad campaign may be capped at $100,000 per month for bidding onimpression opportunities. Therefore bidding may be paced (e.g., by theDSP) so that the budget is not exceeded.

Goals may also be set based at least in part on bidding success rate,conversion rate for remarketing efforts, rate of user actions, number ofactions from unique users, and click through rate (CTR—which can be away of measuring the success of an online ad campaign, obtained bydividing the number of users who clicked on an ad on a web page by thenumber of impression delivered). Such goals may also be set to targetcertain preferred websites, demographics, dayparts, etc. For example, inone embodiment, a campaign goal or objective may be to increase onlineorder volume at or below a target eCPA. In another embodiment, campaigngoals or objectives include attracting a more engaged audience asmeasured by CTR while maintaining a fixed cost per click through (CPC).In another embodiment, campaign goals or objectives may includeachieving aggressive order volume targets at or above a return oninvestment (ROI) hurdle. An advertiser may define any type or form ofconstraints for an ad campaign. For example and in various embodiments,constraints may limit the ad campaign to certain geographical regions,such as the US only. In one embodiment, only user actions (such asregistrations) completed by users residing in the US are desired. The adcampaign may prefer websites hosted in the US and/or targeting a USaudience. Some advertisers may require exclusion of impressionopportunities offered with user generated content (UGC). UGC, sometimesalso known as consumer generated media (CGM), may refer to any onlinematerial, such as blogs and online comments, created by non-mediaprofessionals. In certain embodiments, advertisers may specific afrequency limit on the number of bids per time period. An advertiser mayalso limit the number of campaign flights over a time period, such asthree flights per day. A flight may refer to a period of time in which adefined bid price, daily spend goal and frequency cap are defined. An adcampaign may specify one or more flights, and the bid prices, dailyspend goals and frequencies at which a specific set of ads are servedduring these flights.

Based at least in part on the goals and/or constraints, an advertisermay define or design an ad campaign. The DSP can provide a simple andintuitive interface to help advertisers develop and/or run an adcampaign. The DSP may provide an interface for the advertiser tospecify, define, compose, develop, test, refine, modify and/or design anad campaign, for example, as depicted in FIG. 2G. The DSP may provide aninterface for the advertiser to manually and/or automatically bid on animpression opportunity. In some embodiments, the DSP system providesthis interface in the user interface (UI) layer. The interface providesaccess to and presentation of any of the functionality and services ofthe DSP. An advertiser may use the interface to select or specify adexchanges for inclusion in the ad campaign. An advertiser may specifythe goals and/or constraints for any ad campaign via the interface. Inaddition, an advertiser may access any information provided by the adexchanges and/or publishers via the interface. These information may beprocessed (e.g., reformatted, organized, analyzed, normalized, etc) andmay be presented in a way that is more user friendly and/or easilyunderstood.

The interface may be any type or form of interface, such as a graphicaluser interface (GUI) and/or a command line interface. The interface maybe a web interface or an application/software interface. Portions of theinterface and interface content may be provided by a locally-executingapplication (e.g., software program) on a client machine 102. Portionsof the interface and interface content may be remotely transmitted froma server 106 to a client machine 102 for presentation (e.g., on abrowser executing on the client machine 102). The interface may includeany number of widgets. A widget may comprise any one or more elements ofa user interface which may be actionable or changeable by the userand/or which may convey information or content. Interface widgets maycomprise any type and form of executable instructions that may beexecutable in one or more environments. Each widget may be designed andconstructed to execute or operate in association with an applicationand/or within a web-page displayed by a browser. One or more widgets mayoperate together to form any element of the interface, such as adashboard.

In some embodiments, using any type and form of web browser such asMozilla Firefox, Safari, Konqueror, Opera, Flock, Internet Explorer,Epiphany, K-Meleon and AOL Explorer, an advertiser can create an accountand access DSP services remotely. In certain embodiments, an advertisermay access DSP services locally and/or remotely via an applicationexecuting on a device operated by the advertiser. The advertiser cancompose their ad campaign using digital content stored on the machinethe advertiser is operating or by accessing a remote storage location.Since DSP components may be distributed across networks, each componentmay communicate with another component using any type and form ofinterface, protocol, inter or intra process communications, messaging,etc. In some embodiments, the interface communicates with a DSP Serverusing JavaScript Object Notation, (JSON) format, e.g., as specified inRFC 4627. For example and in one embodiment, the DSP system may includea direct application programming interface (API) to support JSON orother formats. In some embodiments, Hypertext Transfer Protocol (HTTP)and/or Hypertext Transfer Protocol Secure (HTTPS) may be used as thecommunications protocol. DSP services, including web services, may beaccessed through the provided interface via any type and form of webbrowsers and/or applications that can connect to a network. In certainembodiments, DSP services are provided via a website or portal foronline access. In some embodiments, Secure Sockets Layer (SSL)cryptographic protocol or Transport Layer Security (TLS) protocol isused by the DSP platform, portal or website to provide securecommunications with web browsers and application. Any type and form ofsecurity mechanisms and/or protocols may be used to provide a securesession or connection with the DSP platform, portal, service or website.Embodiments of the systems described herein may include any type or formof high speed connection with the DSP platform, portal or website, suchas one or more T1 lines and/or higher bandwidth lines.

In some embodiments, the interface facilitates creation of onlinedisplay ad campaigns. By way of illustration and not intended to belimiting in any way, the following description shows how an advertisermay create a REM online display campaign using the interface. Inconnection with the ad campaign, goal-based optimization, marketingoptions based on core plans, and/or the ability to target or buyaudiences may be provided as part of DSP services. The advertiser canuse the interface to perform any of: (i) create a new REM campaign foran existing advertiser, or select from a list of pre-existing campaigns(e.g., under the Campaign Settings section of the interface), (ii)configure start/end date, price, spend and frequency (e.g., under theCampaign Settings section of the interface), (iii) select a pixel to usein a REM target segment campaign (e.g., under the Pixels section of theinterface), (iv) enter an ad tag creative to be used in the campaign(e.g., under the Creatives section of the interface), and (vii) launchthe REM campaign. A creative, as referenced above, may represent onlineads that are referenced via ad tags. These online ads may be used toremarket to users.

In some embodiments, a pixel, as referenced above, is an image that isplaced on an advertiser's page or pages and used to target a REMsegment. In some embodiments, a pixel is a unique tracking element whichis used to serve ads to a visitor when they are on other web sites. Thepixel can be of any size, such as 1×1. The pixel may represent, includeor incorporate any type or form of script or program code. The script orprogram code may be activated when the pixel and/or the host webpage isloaded onto a browser or device. This pixel may install a trackingdevice on a consumer's device used to visit the advertiser's page orwebsite. REM may target known consumers who have taken a specific actionat a site as they travel to other sites across the internet. Asuccessful REM may reach these consumers by serving them compelling adsbased on their previous actions.

In certain embodiments, the DSP interface is designed to allow anadvertiser to enter any type or form data as it becomes available to theadvertiser. The interface may include a dashboard that provides alisting of ad campaigns in the DSP system associated with an advertiser.The dashboard may indicate the status of each campaign dynamically inreal-time or with updates at defined instants. In some embodiments, anadvertiser can perform any of the following from the Dashboard: adding anew campaign, editing an existing campaign, launching a campaign orstopping a campaign that is currently running. Campaigns may be listedin chronological order (e.g., newest to oldest), or in any order. Insome embodiments, the interface can display any type or form of campaigndata, such as Campaign Name, Advertiser, Campaign Type, Start/End Date,Status (e.g., Not Ready to Launch, Ready to Launch, Scheduled Pause,Manual Pause, Running, Completed, etc). The interface may also includeAction Buttons or widgets for performing specific actions (e.g., EditCampaign, Launch Campaign and Pause Campaign).

The display can present additional details of any listed campaigns,e.g., upon user demand. For example and in one embodiment, a user mayview additional details regarding the status of steps required to createa launch-ready Campaign. In certain embodiments, the interface includesthree sections for defining or configuring an ad campaign: CampaignSettings, Pixels and Creative. In one embodiments, a campaign is readyfor launching when these three sections are complete. An advertiser maycreate a new campaign in the Campaign Settings section. To edit acampaign, a user may select the campaign and identify the section(s) forediting. In some embodiments, a campaign is editable if the campaign'sstatus is “Not Ready to Launch” or is paused (e.g., manually or throughscheduling). In one embodiment, a user can manually pause a campaignthat has already launched (e.g., performing impression opportunitymonitoring and/or bidding) via the dashboard (e.g., a “Pause Campaign”Action Button). After making edits, an advertiser can launch an editedcampaign (e.g., via a “Launch Campaign” Action Button). In someembodiments, a Launch Confirmation screen allows a user to review someof the settings before launching a campaign.

In some embodiment, once a campaign is launched, the correspondingstatus may be “Running” or “Scheduled Pause” (e.g., if the start date isin the future). A campaign will continue until (i) the campaign ismanually paused by a user, (ii) the campaign is scheduled to pause byplacement of a gap between flight dates, or (iii) the campaign hascompleted one or more flights, or its run of flights.

A user may include any type and form of configuration setting for acampaign via the interface. In some embodiments, a user (e.g., from an aagency) may identify a client (e.g., from a plurality of clients) forwhich the user is creating a campaign. The user may specify or selectthe type of campaign (e.g., REM, prospecting) to create or launch. Theuser may specify or select a third-party ad server (e.g., Atlas and DARTfor Advertisers (DFA), 3PAS), e.g., as depicted in FIG. 2G. The user mayalso specify or select one or more of: the advertiser site, targetedunique visitor count (e.g., per month), spending goals (e.g., dailyspend goals), targeted segment (e.g., defined by third-party analyticssuch as Exelate and Axciom), types of completed actions, types ofimpression opportunity, types of published content, channels, day parts,week parts, ad size preferences, bid range and targets.

A user may include any type and form of configuration setting for aflight via the interface. For example, a user can specify the start andend dates/times for a campaign flight. A user can create multiple oradditional flights via the interface. A user can extend a campaign ortest different bid prices, daily spends and frequency caps against eachother. Any type or form of flight details can be presented on demand viathe interface, e.g., responsive to a mouse-over, presenting a visualreference of a flight. Any of the specifications or settings describedherein may be entered into data structure for evaluation, verification,calculation or checks. For example and in one embodiment, price, dailyspend and frequency goals and/or caps for a flight may be entered into abudget matrix of the interface. Specifications classified as a goal(e.g., daily spend goal) is specified as a target to the DSP and may notbe guaranteed. Specifications classified as a range, limit, floor or capmay be guaranteed.

In some cases, an ad agency may represent a client. The ad agency mayhave a CPM price agreement with the client for an ad campaign. The adagency may specify this CPM (or Advertiser IO Price) via the DPSinterface, for example to determine or calculate the maximum bid for thead campaign. A user may specify a bid price via the interface. The rangeof the bid price may be determined or capped by the Advertiser IO Price.In some embodiments, the DPS may calculate a Daily Estimated AvailableImpressions (e.g., At Cost) using an algorithm that approximates thetotal pool of available number impressions. The DPS may comprise orcommunicate with an impression calculator that determines an estimate ofdaily impression opportunities available across one or more providers.In certain embodiments, the Daily Estimated Available Impressions (DEAI)represents the total possible impressions, e.g., at the set price andfrequency cap. In other embodiments, the DEAI represents the number ofestimated impressions at the set price and frequency cap. The DPS maycalculate the DEAI based on the number of monthly unique users to theAdvertiser Site. By way of illustration, the DPS may determine theflight spending by multiplying Daily Spend Goal by the number of days inthe flight. The DPS may determine the campaign budget based on theflight spending of flights in the campaign.

An advertiser may specify a frequency cap for serving the advertiser'sads. The advertiser may have an option of choosing how often ads areserved per number of Hours, Days, or other time period. An advertisermay specify or choose to have the ads served ASAP, evenly distributed,according to other distribution profiles or via the DSP's recommended oroptimized settings. An advertiser can save any portion of the settingsor specifications disclosed herein at any point of time.

An advertiser may select or create any type or form of REM targetingsegment pixel for a campaign. The advertiser may add one or more ads forthe campaign. Each ad may be referenced by an ad tag. Each ad may beserved from an ad server which may be specified via the interface. Insome embodiments, some ads may be uploaded into the DPS via theinterface. In certain embodiments, ads may be designed, customizedand/or modified via the DPS interface. An advertiser can specify one ormore ad sizes. In some embodiments, standard ad sizes may be specifiedor automatically configured. In one embodiment, the DPS mayautomatically resize and/or crop an ad to match an ad size offered by animpression opportunity.

In some embodiments, the brain engine of the DSP processes some or allof the data provided via the UI, core and/or integration layers. Thebrain engine may use any of these data for campaign creation,trafficking management, yield management and/or generating analytics. Insome embodiments, trafficking refers to running campaigns by sending adtags to publishers and/or ad exchanges. Yield management may refer toanalysis or evaluation of campaigns to obtain measures of onlineadvertising success. Online advertising success may be measured in anyone or a combination of cost, budget-management, user actions orconversions, increased audience awareness of advertiser products and/orservices, bidding success rate and/or efficiency, order volume andrevenue. Online advertising success may incorporate metrics such as CPM,CPI, CPC, CTR, CPA, ROI, cost per lead or registration (CPL) and costper sale (CPS).

The DSP system may be designed and built for scalability. Some estimateshave reported that over thirteen billion impression opportunities may beavailable per day. Accordingly, the DSP system can operate to analyzeand/or handle transactions for large volumes of impression opportunitiesefficiently and effectively. In addition, the DSP can interface with anynumber or type of ad exchanges and/or ad networks, including but notlimited to RightMedia, Google AdX, AdECN, Adsdaq, Adbrite, Valueclick,Admeld, SpotXchange, AdNexus, AdBidcentral, Traffiq, OpenX, BidPlace,Facebook, Pubmatic and Yahoo APT. In some embodiments, the systems andmethods described herein can source for new ad exchanges and/or adnetworks online (hereafter sometimes referred to as “supply partners”),and incorporate new interfaces for these or adapt existing interfacesfor reuse on these supply partners. The DSP platform can interface withbiddable media sources of any level of sophistication, including but notlimited to real-time bidding, API based platforms, and UI/bidsheetinterfaces.

In various embodiments, the DSP platform can handle one or more biddingtransactions (or bids) within short periods of time (e.g., 30 ms).During a short period of time, the DSP platform can communicate orsubmit one or more bids for an advertiser to one or more impressionopportunities for the placement of an advertisement. These periods oftime may be dependent on, or relative to network latency and/or loadtimes for a page or image (e.g., on a web page). In some embodiments,the DSP platform includes direct connections to some or all supplysources, which can enable low bid latency. For example and in oneembodiment, a user action may trigger loading of a web page having animpression opportunity. In another embodiment, a user action may triggerloading of an application interface having an impression opportunity. Insome embodiments, the impression opportunity is offered for bidding(e.g., via one or more ad exchanges) responsive to the user action. Inother embodiments, the impression opportunity is preemptively offeredfor bidding prior to a user action or schedule action. During anyportion of the time from offer of the impression opportunity until thecomplete loading of the page or interface, a DSP may perform any of theimpression opportunity analysis, determination of whether to bid,bidding rule adjustments, actual bidding, delivery of ad to publisher,payment of a successful bid, etc. The DSP may consider the impressionopportunity in connection with one or more other impressionopportunities to determine which impression opportunities to bid on atany instant of time and/or at what bid prices. For an impressionopportunity that is offered via multiple ad exchanges, the DSP may alsodetermine the ad exchange(s) to submit a bid to.

The DSP, including the brain engine, may incorporate any standard,proprietary and/or custom algorithms and/or software for executing onhardware from the DSP provider, advertisers and/or DSP partners. Thealgorithms and/or software may incorporate any type or form ofpredictive modeling, simulation methods, and computational techniques,e.g., from physics, statistics, game theory, and algorithmic securitiestrading. The algorithms and/or software integrated in the DSP platformmay be refined or tuned via any number of real-world or simulatedcampaigns.

The DSP, via the interface and/or brain engine, may operate across anynumber of exchanges, accounting for differences in available data sets,variable naming, and bid types (CPM, CPC, etc). The DSP, via theinterface and/or brain engine, may incorporate any number and/or type ofvariables, including third-party data (e.g., from Exelate service). TheDSP may identify any important groupings within those variables. TheDSP, via the brain engine, may recognize and account for interactionsbetween variables (e.g., Monday impressions perform poorly, but Mondayin News channel works well except for dialup connections). The DSP, viathe brain engine, may adaptively adjust bidding rules based oninteractions between variables.

The DSP, via the brain engine, may optimize bidding operations towardsany definable or measurable buyer goal (e.g., click count, orders,post-order activity, ROI, etc). The DSP, via the brain engine, mayauto-update predictions and/or bidding rules as more data becomesavailable. The DSP, via the brain engine, may determine and implementcompetitive bidding, e.g., by adjusting bids according to recent biddingresults and parameters. The brain engine may continually or dynamicallyre-test predictions and/or rule sets to ensure ongoing accuracy ofpredictions, competitive bidding prices, consistency with advertisergoals and/or constraints. In some embodiments, the brain engine canidentify anomalous activity, e.g., via profiling impression opportunitytransactions and/or user actions. Based on the anomalous activity, thebrain engine may adjust the bidding process or rule set, the DSP'sinteraction with any ad exchange or publisher, or any other aspect ofthe ad campaign.

By way of illustration and not intended to be limiting in any way, thebrain engine of the DSP system can generate estimates for metrics suchas CPM for different categories of impression opportunities. Forexample, pools of impression opportunities may be integrated andnormalized into a single pool of impression opportunity supply. In someembodiments, the brain engine predicts the impression pool size for aparticular day or other time period through analysis of available data.Based on this pool, the estimated CPM may be $1.37, for example. Thispool may be further divided into impression opportunities suitable forREM (e.g., 4% of all impression opportunities, CPM=$5.53) andprospecting (e.g., 96% of all impression opportunities, CPM=$1.20). Theprospecting impression opportunities may be further classified accordingto segments (e.g., 5% from BlueKai segment at $2.24, 7% from Exelatesegment at $2.17, etc). Each segment may be further classified intochannels (e.g., 8% from news at $1.14, 11% from women at $1.31, etc).Each channel may be further classified into dayparts (e.g., 13% from the12 pm-6 pm slot at $0.86). In some embodiments, the REM impressionopportunities may be further classified according to ad size (e.g., 2%are 728×90 ads at a CPM of $2.24), and further classified according toweekpart (e.g., 1% of impression opportunities applies to weekend at aCPM of $4.90). Based on this impression opportunity pool analysis, theDSP system can help an advertiser tailor a campaign and/or match demand(e.g., for specific inventory types) with the available supply ofimpression opportunities.

In some embodiments, the DSP platform can provide comprehensivereporting capabilities. Reporting capabilities includes support forinternal clients (e.g., DSP administrators and developers) as well asexternal client (e.g., ad agencies). Reporting may be provided via theDSP interface and/or delivered directly to a requestor, e.g., via email.Reporting capabilities include operational reporting as well as any typeor form of insight and analytics. In some embodiments, operationalreporting includes any type or form of statistics, logs, records,summaries and/or alerts pertaining to the operation of the DSP system,running of a campaign, execution of a flight and/or status of a bid.Insights and analytics may include any type or form of information ordata processed or derived from operational data, supply partners,third-party sources and/or advertisers. The DSP platform can providereal-time analytics, e.g., via a feedback loop in which the brain engineconstantly updates bidding modules as statistically significantvariables are discovered and/or pockets of performing media areunlocked.

A business intelligence (BI) suite may provide insights and analyticscapabilities. A BI suite may provide an external presentation layer aspart of the DSP reporting capabilities. For example and in oneembodiment, the BI suite may provide insight and analytics to adagencies using the DSP platform. A BI suite may apply analysis andintelligence on data inputs incorporated from various sources andapplications. A BI suite may provide a range of features such asinteractive dashboards, proactive intelligence delivery and alerts, adhoc queries and analysis, operational and volume reporting, onlineanalytical processing (OLAP) analysis and presentation, dynamicpredictive intelligence, disconnected analytics, unified metadataprocessing and ETL from any data source.

In some embodiments, the DSP can provide site or audience analysis aspart of its insight and analytics capabilities. In various embodiments,the DSP's BI, insight and analytics capabilities may be implemented inthe optimization layer. In some embodiments, the DSP's insight andanalytics capabilities can estimate, determine and/or recommend optimalfrequencies (e.g., of flights, bidding), rank responsive of regions ortarget segments, identify the relative success of ad channels and/orpublishers (e.g., with respect to order volume and/or user actions), andcharacterize or classify conversions. In certain embodiments, the DSPcan provide analysis pertaining to creatives. For example and in someembodiments, the DSP can profile or summarize the attributes ofcreatives applied in ad campaigns. The DSP may determine which creativeconcepts are driving performance in terms of sales and/or differenttypes of user actions.

In certain embodiments, the DSP can provide attribution and segmentationanalysis. This may include determining an optimal timelag window forattribution, bidding, presenting an ad, executing flights, or running acampaign. The DSP may determine the economics (e.g., ROI, CPM, etc) atan ideal timelag window. The DSP brain engine may determine thecharacteristics and/or profiles of conversion segments. The DSP brainengine may attribute success of certain metrics to particular segments,channels, ad flights, campaigns, etc. In some embodiments, the DSP canforecast spending levels. For example and in some embodiments, the DSPcan predict what CPA (or other metric) can be achieved according tocertain budget levels. The brain engine of the DSP can adjust or scalethe forecasts based on changes in different budgeting aspects.

In some embodiments, the DSP system provides distributed processing forits subsystem components. FIG. 2D depicts one embodiment of thisdistributed DSP platform. In certain embodiments, a plurality of datacenters may house brain engines, pixel management technology, biddingmodules, data warehouses, offsite backup, system fault tolerancesupport, application failover clusters, etc. Some data centers or serverfarms 38 may include an application cluster comprising a brain engine,an uber bidder, bidders, a local data store or warehouse. Clientrequests, including ad campaign creation, requests for reports, campaignexecution and campaign simulation, may be distributed via global loadbalancing (e.g., via a central server) to one or more data centers forprocessing.

Some of the DSP data centers or application clusters may be connected byprivate transit interconnects or links. Some of the DSP data centers orapplication clusters may be secure by firewalls. In some embodiments,the DSP platform includes direct links to major peering points, e.g.,peer and internet exchange (PAIX), New York International InternetExchange (NYIIX), etc. Some of all of the DSP distributed system may bemonitored via a distributed or central Network Operations Center. Insome embodiments, the distributed DSP platform provides fault tolerantoperation and/or failover. The distributed DSP platform may providedynamic, real-time scalability. The distributed DSP platform can becustomized ore reconfigured to meet evolving needs. In variousembodiments, the distributed DSP platform can provide high systemavailability and/or high system performance.

Referring now to FIG. 2E, a flow diagram depicts embodiments of stepstaken in a method 250 for integrating multiple pools of impressionopportunities from multiple advertising exchanges for bidding byadvertisers. The method includes receiving, via an interface of a demandside platform (DSP), at least one constraint and at least one goal foran online advertising campaign from a user (251). A bidding module ofthe demand side platform receives a first impression opportunity forbidding, the first impression opportunity accompanied by a first set ofdata delivered via a first advertising exchange (253). The biddingmodule receives a second impression opportunity for bidding, the secondimpression opportunity accompanied by a second set of data delivered viaa second advertising exchange (255). The bidding module normalizes thefirst set of data and the second set of data (257). An engine of thedemand side platform determines to bid on the first impressionopportunity or the second impression opportunity based on the normalizedfirst and second sets of data (259).

Referring now to FIG. 2E, and in greater detail, the method includesreceiving, via an interface of a DSP, at least one constraint and atleast one goal for an online advertising campaign from a user (step251). In some embodiments, a user (e.g., of an ad agency), enters orotherwise inputs at least one constraint and goal for an ad campaign viaan interface provided by the DSP. These constraints and/or goals mayincorporate features of the constraints and/or goals discussed above inconnection with FIGS. 2A and 2B.

The user may enter additional information with respect to the campaign,such as parameters or settings of any type or form described above inconnection with FIGS. 2A-2C. For example, the user may specify theadvertiser or client for the campaign. The user may specify any one ormore of: the type of campaign, the advertiser site, targeted uniquevisitor count, spending goals, targeted segment, types of completedactions, types of impression opportunity, types of published content,channels, day parts, week parts, ad size preferences, bid range andtargets. The user may include any type and form of configuration settingfor a flight, such as the start and end dates/times. The user mayspecify a frequency cap and/or profile for serving the advertiser's ads.The user may select or create a REM pixel and/or ads for the campaign.

The user may enter any of these information, constraint(s) and/orgoal(s) using a form, script and/or command line submission. The usermay provide any of these information and/or selection via a web orapplication interface. In some embodiments, the user may request the DSPto recommend at least one constraint, goal, setting and/or parameter forthe campaign. The DSP may determine a recommendation of a constraint,goal, setting and/or parameter based at least in part on otherinformation provided by the user, available in the DSP warehouse and/orfrom third-party sources. The DSP may calculate estimates for metricssuch as campaign budget, based at least in part on other informationprovided by the user, available in the DSP warehouse and/or fromthird-party sources. In some embodiments, the DSP may predict a measureof success for the campaign based in part on estimated impressionopportunity availability and/or past statistics.

In further details of 253, a bidding module of the DSP receives animpression opportunity for bidding. The impression opportunity isaccompanied by a set of data delivered via an advertising exchange. Thebidding module may receive a set of data specific to the ad exchange.The bidding module may receive the set of data associated with ordescribing the impression opportunity. The bidding module may receivethe impression opportunity in real-time as the impression opportunity isabout to be presented to a user. The bidding module may receive theimpression opportunity before a user can cause it to be presented to theuser.

In further details of 255, the bidding module receives anotherimpression opportunity for bidding. This impression opportunity isaccompanied by a another set of data delivered via another advertisingexchange. This set of data may be specific to the corresponding adexchange. The bidding module may recognize or determine that this set ofdata is presented or organized differently from the earlier set of data.The bidding module may recognize or determine that this set of dataincludes more (or less) information than the earlier set of data. Insome embodiments, the bidding module determines that this impressionopportunity is the same as the other impression opportunity, althoughthe accompanying data sets may differ in some aspects.

In further details of 257, the bidding module normalizes the two sets ofdata. The bidding module may apply any type or form of ETL, filtering,protocol translation, data integration, mapping, reformatting or otherprocessing techniques to normalize the two sets of data. The biddingmodule may compare the types of data between the two sets of data indetermining how to perform the normalization. The bidding module mayrequest for additional data for each set of data from the correspondingad exchange and/or retrieve additional data from a data warehouse of theDSP.

In further details of 259, an engine of the demand side platformdetermines to bid on one of the first impression opportunities based onthe normalized sets of data. The engine may process one or more of theconstraints, goals, parameters, settings and/or normalized sets of datato determine whether to bid on either impression opportunities. Theengine may generate an initial set of one or more rules from one or moreof the constraints, goals, parameters, settings and/or normalized setsof data to determine whether to bid on either impression opportunities.The engine may determine to whether to bid on either impressionopportunities based on the initial set of rules. The engine may predictan outcome for a bid. The engine may determine what price to use for abid. In some embodiments, the engine determines not to bid. In otherembodiments, the engine determines to bid on one or both of theimpression opportunities.

In some embodiments, the engine submits a bid to one of the impressionopportunities. The DSP may deliver a REM pixel and/or ad for theimpression opportunities. If the bid is accepted, the DSP may processpayment for the bid. In some embodiments, the outcome of the bid isupdated into the DSP's data warehouse. The DSP may adjust or change theinitial rule set based on the outcome of the bid.

Referring now to FIG. 2F, embodiments of analysis and normalization ofdata and interfaces across a plurality of disparate and different supplysources, referred to as cross-exchange integration and normalization, isdepicted. FIG. 2F depicts, in one of the embodiments, a transactionsystem and environment for cross-exchange interfacing and bidding.

In brief overview of FIG. 2F, an embodiment of the transactional bidenvironment is depicted. The transaction bid environment includes aconnection manager, exchange interpreter, decisioning/decisioner,predictor, brain engine and transaction level data aggregation andreporting, Each of the above modules may comprise any type and form ofexecutable instructions executing on any one or more computing devices.

The connection manager comprises logic, functions and operations forinitiating and maintaining connections and communications to each of thedisparate and discrete exchanges. The connection manager may be designedand constructed to communicate and interface to each exchange based onthe technology, API, protocols and command and data communicationsspecific to each exchange.

The exchange interpreter comprises logic, functions and operations fornormalizing the input and output data and information from each of theexchanges. The exchange interpreter identifies and maps the input andoutput data from the exchanges to a common, single interface and dataset to be used by the demand side platform and/or bid transactionsystem. In some embodiments, the exchange interpreter includes the ETLfeatures to normalize and load the exchange inputs (bid requests) andbid environment outputs (bid response).

The decisioning or decision module comprises logic, functions andoperations for identifying creatives or forms of advertisementsavailable for auction based on bid request, traffic rules and budgetrules. The traffic rules may comprise any type and form of policies orrules for deciding on bidding based on the publisher, user, location,geo data, network information of the traffic and any other informationabout the source of the advertisement to the destination of delivery ofthe advertisement. The budget rules may comprise any type and form ofpolicies or rules for deciding on bidding based on any constraints orgoals of the campaign, including budget and flighting.

The predict module may comprise logic, functions and operations tocalculate, identify and/or present the probability of click andconversion for a set of creatives. The brain engine generates the bidbased on decisioning, prediction and campaign metadata. Thetransactional environment provides one or more reporting modules thatprovide performance and operation metrics, information and data on anylevel of granularity from transaction level to campaign level toexchange level. Each reporting module may provide performance andoperation metrics, information and data on any aggregation of agency,campaigns, transactions, exchanges including cross-transaction,cross-campaign and cross-exchange information. The reporting module mayprovide performance and operation metrics, information and data on anyof the traffic and budget rules and the performance and operation of anyof the modules, including bidder, predictor and decisioning modules.

Referring now to FIG. 2G, an embodiment of a DSP 120 is depicted. Inbrief overview, the DSP may include an interface for requestors torequest campaigns be executed for bidding via the bidder on impressionopportunities provided by a plurality of impression opportunityproviders, sometimes referred to as exchanges. Each of the differentexchanges may have different data formats, protocols and parameters usedby the exchange interface for bidding, such as different data formats,protocols and parameters for a bid request and bid response. The DSP mayhave a plurality of exchange interfaces that are designed andconstructed to interface to or communicate with the interface of each ofthe plurality of exchanges. The DSP may include a normalizer to providea normalized set of data from the plurality of different data and dataformats provided by the different exchanges. The bidder may use thenormalized set of data for bid requests and bid responses communicatedwith an exchange. The bidder may operate responsive to a campaign set upvia an interface that allows a requestor to setup campaign goals andconstraints. Using a single interface to setup and request execution ofa campaign, the bidder may execute the campaign to trade or match aplurality of advertisement placements to a plurality of impressionsacross a plurality of different exchanges.

In further details, each of the exchange interfaces may comprise anytype and form of executable instructions that are designed andconstructed to interface to, communicate with and/or transact with apredetermined exchange and the interface provided by such an exchange.Each exchange interface may be designed and constructed to use formats,data, parameters and protocols recognized and used by the exchange, suchas any of those depicted in FIGS. 2H and 2I described below. Eachexchange interface may be designed and constructed to handle bidrequests and bid responses or otherwise perform a bid relatedtransaction with the exchange. Each exchange interface may identify andprocess data received by the exchange to store to a database for use bythe bidder in further bidding determinations. Each exchange interfacemay store the data sent to and/or received from an exchange to thedatabase in a desired manner for normalization or otherwise to anormalized data storage or structure storing the data. In some cases, asingle multi-interface exchange interface may be designed andconstructed to interface to and/or communicate and transact with theplurality of exchanges.

Referring to FIGS. 2H and 2I, these diagrams depict the differentinterfaces of bid requests and responses across a set of exampleembodiments of exchanges. FIG. 2H depicts generally a set of parametersthat may be used in bid requests across a plurality of differentexchanges (e.g., Exh A thru Exh N). FIG. 2I depicts generally a set ofparameters that may be used in bid responses across a plurality ofdifferent exchanges (e.g., Exh A thru Exh N). Each of the exchangeinterfaces may be designed and constructed to handle the requestparameters depicted in FIG. 2H for bid requests from a correspondingexchange and the response parameters depicted in FIG. 2I for bidresponses from the corresponding exchange.

In FIG. 2H, a table of parameters P1-PN are identified across aplurality of exchanges Ech A-Ech N for bid requests. Each of theexchanges may have an API format or interface, such as a Jason (JSON)interface, HTTP Post interface or an HTTP Get Interface identified inparameter P1 in the table. Some of these API formats may use querystring parameters in the Get or Post. Some of these API formats may betext based. Some of these API formats may be XML based. Some of theseAPI formats may use Google protocol buffer. Protocol buffers is Google'slanguage-neutral, platform-neutral, extensible mechanism for serializingstructured data, similar to XML. One define how the data is to bestructured once, then special generated source code is used to write andread the structured data to and from a variety of data streams and usinga variety of languages, such Java, C++, or Python. Each of the exchangespay have an identified, predetermined to expected response time, such asthose identified by parameter P2 in the parameter table. In accordancewith their identified API format, the exchanges pay receive and/or passparameters via the request. Each of the exchanges may support some ofthe same parameters while some exchanges do not support the sameparameters. Exchanges supporting the same parameters may use the same ordifferent variable names or id for such parameters. An exchange maysupport or use other or additional parameters not used by anotherexchange.

Some of the exchanges may have an identified, predetermined or expectedresponse time, such as those identified by parameter P2 in the parametertable. Each of the exchanges may use a differently named parameter orvariable for a request identifier and user identifier, such as thoseidentified in parameters P3 and P4. Each of the exchanges may use thenamed parameter or variable for a visitor or user's IP address, such asthose identified in parameter P6. Each of the exchanges may use variousvariables for parameters identifying the size of the ad, such as adwidth and height identified in parameters P26 and P27. Each of theexchanges may use various variables for browser or user agentidentification such as parameter P9. Each of the exchanges may usevarious variables for identifying the page url for the bid request orimpression such as parameter P11.

In some cases, some of the exchanges support a certain set of parameterswhile others do not. For example, in view of parameter table in FIG. 2H,not all the exchanges support or have variables for parameters P5, P7,P8, P10, P12-P25, and P28-P31. Some of these parameters include externaluser identification or id (P5), time zone identification (P6), languageidentification (P7) and identification of a site URL (P10). ParametersP12-P25 used by some of the exchanges may identify and use differentvariable for the following: Referrer (of Page URL), Cookie, Category,Publisher, Tagged, Sited, Age (of user), Gender (of user), Country (ofuser), Region (of user), DMA, City, Antitype (js, html) and AdType. Eachof the exchanges may support or use other, additional or optionalparameters, such as those identified in parameters PN.

In FIG. 2I, a table of parameters P1-PN are identified across aplurality of exchanges Ech A-Ech N for bid responses. Each of theexchanges may have an API format or interface, such as a Jason (JSON)interface, HTTP Post interface, text interface or an HTTP Get Interfaceidentified in parameter P1 in the table. Some of these API formats mayuse Google protocol buffer. Each of the exchanges may support oridentify variables for the creative such as those identified inparameter P6. Some of the exchanges may have an identified,predetermined or expected response size, such as those identified byparameter P2 in the parameter table. In some cases, some of theexchanges support a certain set of parameters while others do not. Forexample, in view of parameter table in FIG. 2I, not all the exchangessupport or have variables for parameters P3-P5 and P7-P15. ParametersP3-P5 and P7-P15 used by some of the exchanges may identify and usedifferent variable for the following: CPM, Creative, Creative ID,Creative Attribute, Click-thru URL, Request ID, Transaction ID, BrandType, Notification URL, and Piggyback Cookie.

Referring back to FIG. 2H, the DSP normalizes the interfaces to each ofthe plurality of exchanges. As the DSP is aware of and understands thesimilarities and difference between each of the exchanges, the DSP cannormalize these similarities and differences such that a singleinterface for establishing and executing a campaign across theexchanges. The normalization may occur in multiple ways, such asproviding a data abstraction, data interface and/or data structures,such as a unified or normalized data interface, in the DSP thatrepresents the common parameters across the exchanges. When the DSPinterfaces with the exchange, the DSP may translate these normalizeddata structures to the parameters and variable names expected by thespecific exchange. For those parameters not common across all thesupported exchanges, the DSP may include logic, functions or operationsto provide values for those parameters that are appropriate for thetransaction when interacting with the exchange. The values for theseparameters may be data tracked or managed by the DSP and stored in a DSPdatabase, such as a user database or an exchange related database.Likewise, when receiving responses from the exchange, the DSP maytranslate the common exchange parameters into the unified or normalizeddata interface and non-common parameters are tracked and managed by theDSP, such as via a user or exchange database.

By normalizing the data for the exchanges and providing one interface torun a campaign that executes across the plurality of exchanges, the DSPplatform provides a cross-exchange system with a single interface totrade demand for impression placement with supply of impressionopportunities. From one or more campaigns of an advertiser, a firstportion of the demand of the campaign to place advertisements may betraded with or matched to a first set or pool of impressionopportunities of a first exchange, a second portion of demand of thecampaign to place advertisements may be traded with or matched to asecond set or pool of impression opportunities of second exchange, andso on. For example, a first advertisement of the advertiser for a firstcampaign may be delivered to a first impression opportunity of a firstexchange while a second advertisement for the first campaign may bedelivered to a second impression opportunity of a second exchange, andso on. As such, a single campaign may be executed across differentexchanges and pools of impression opportunities.

An advertiser may run a plurality of campaigns that are executed acrossthe same set or different set of multiple exchanges than previouscampaigns of the advertiser or campaigns of other advertisers. As theDSP is a multi-user service or platform that supports a plurality ofcampaigns executing from the same advertise and different advertisers atthe same time, the DSP provides a trading platform of matching aplurality of demand for advertisement placements of a plurality ofadvertisers to a plurality of pools of impression opportunities across aplurality of exchanges. As such, a plurality of campaigns may beexecuted across different exchanges and pools of impressionopportunities.

One or more campaigns executed across the plurality of exchanges may beestablished, requested and/or executed via a common, unified ornormalized user interface. Although the exchanges have different bidrequest and response parameters and different API formats andinterfaces, the DSP platform provides a common or unified userinterface, sometimes referred to a single interface, to the user toprovide an efficient and easy input mechanism to setup and run campaignsfor these different exchanges. The unified user interface removes thesedifferences in the interface to the exchange so that the user canprovide a campaign strategy via the unified interface that works acrossthe exchanges without the user dealing with these differences. In oneaspect, the unified user interface allows the user to setup and run acampaign agnostically to the pool of exchanges accessible via the DSP.

A user may establish a campaign and campaign strategy with specifiedgoals and constraints. These goals and constraints are applied by theDSP to execution of the campaign across the plurality of exchanges.Although placements of impressions will be transacted with differentexchanges for the campaign, the DSP applies the common or single set ofgoals and constraints specified for the campaign to the aggregated setof placements for the campaign across the different exchanges. Forconstraints, the DSP applies the specified constraints to bidding andplacement of impressions on an exchange in the terms and format of theinterface of the corresponding exchange. For a campaign, the DSP tracksand manages the plurality of bid transactions across the differentexchanges. The DSP compares and tracks the campaign results in progressto the campaign goals. The DSP uses these comparisons and tracking asinput and/or to adjust the remaining execution of the campaign.

The DSP, such as via bidder, may track statistics regarding number ofavailable impression opportunities across the exchanges, number of bidsand/or number of procured impression from the impression opportunities.Based on historical data and trends, the DSP may calculate and provide adaily estimate of a number of impression opportunities available in theaggregate across all available exchanges. Based on historical data andtrends, the DSP may calculate and provide a daily estimate of a numberof impression opportunities available across each of the exchanges. TheDSP may provides an estimated number of impression opportunities for anexchange or aggregate of exchanges for any predetermined time period,such as impression opportunities expected for a week or month. Based onhistorical data and trends, the DSP may calculate and provide anestimated number of impression procurements over a predetermined timeperiod for each of the exchanges and/or the aggregate of exchanges. Anyof the estimated calculation of impression statistics, such as a dailyimpression calculation, may be published or posted via the userinterface or may be queried via an API.

In some embodiments, the DSP calculates or determine a Daily EstimatedAvailable Impressions for a campaign. The daily estimated availableimpressions is calculated to approximate the total pool of availablenumber impressions, such as those available at the cost specified by acampaign. This may be based on the number of monthly unique users to theAdvertiser Site. The Daily Estimated Available Impressions may be thetotal possible impressions, not the number of estimated impressions atthe set price and frequency cap. The daily estimated availableimpressions may be calculated to approximate the total pool of availablenumber impressions for the goal and constraints specified by thecampaign.

Furthermore, the DSP may be configured to report information onoperation and performance of the campaign across a plurality ofexchanges to one or more Ad Servers identified by a user. As such, theexecution of the campaign across exchanges may still be reported to asingle identified Ad Server. This provides for a more efficientadministrative and single interface point for reporting to an Ad Serverthe activity from a plurality of campaigns running through the DSPacross a plurality of exchanges.

The DSP via the user interface may allow the user to setup campaigns,specify campaign goals and constraints. The DSP may support flighting,which comprises defining the goals and constraints via one or moreflight configurations. A flight is period of time in which defined bidprice, daily spend goal and frequency cap are defined. In someembodiments, to define a flight, the user enters an Advertiser IO Price.The Advertiser IO Price is the CPM (cost per impression, such as costsof advertising per thousand potential customers reached by a givenadvertisement) price agreement between your agency and your clientadvertiser for the remarketing portion of the campaign. This amount maybe used to calculate the maximum bid allowed in the Bid Price. For theflight budget, the user may specify Price, Daily Spend and Frequencycap. Once a Bid Price is specified (the range of which is determined bythe Advertiser IO Price specified), the Daily Estimated AvailableImpressions (At Cost) is calculated using a algorithm that approximatesthe total pool of available number impressions. This may be based on thenumber of monthly unique users to the Advertiser Site. The DailyEstimated Available Impressions may be the total possible impressions,not the number of estimated impressions at the set price and frequencycap. The user may specify a desired Daily Spend Goal which should beless than or equal to the Cost of the Daily Estimated Available Imps.Upon specifying a Daily Spend amount, the Flight Spend will becalculated by multiplying Daily Spend Goal by the number of days in theflight. The user may also set a Frequency Cap for the serving of ads.The user may have the option of choosing how often ads are served pernumber of Hours or Days. Also, the user may specify to have ads servedASAP or evenly throughout the chosen time measure. In some embodiments,the user may specify for the DSP to optimize Frequency Cap. In theseembodiments, the DSP determines the frequency at which to increase thechances of meeting the flight spend goals (based on the bid price anddaily spend goal). The Campaign Budget may be the sum of chosen DailySpend of all flights in the campaign.

Referring now to FIG. 2J, an embodiment of a unified or common interfacefor setting up or establishing a campaign with goals and/or constraintsto be executed across a plurality of exchanges is depicted. In briefoverview, a user may add a campaign and strategy for the campaign viathe user interface. The campaign strategy may define campaign goals andconstraints for guiding, instructing or otherwise providing directivesfor bid management to the DSP and the bidder in executing the campaign.A user may specify a campaign strategy name, start and end dates and abudget in dollars for the campaign. The user may specify constraints interms of budget pacing—how to spend the budget over a predetermined timeperiod (e.g., spend per day). The user may specify a goal type based onaudience, engagement or response. The user may specify a goal value forthe specified goal type and a maximum bid. The user may specify a bidaggressiveness via a scale from less aggressive to more aggressive. Theuser may specify a frequency for the campaign such as how manyplacements per day and when those placements should occur. The user mayspecify the supply sources or exchanges to use for the campaign. Theuser may identify what type of sites to run or not run campaigns.

For a campaign, one or more goals may be specified by a user. The goalsmay include a total budget or spend for the campaign. A type of goal maybe one of the following: audience, engagement or response. The audiencegoal type may be a focus on reaching a certain number or type ofaudience. For an audience goal type, the goal type may further include aspend or reach goal. A spend type of audience goal may be to spend acertain amount of dollars, such as to spend dollars more effectivelywhen reaching an audience. A spend type of audience goal may be to reacha certain number and/or type of audience via the campaign at the expenseof being less effective with campaign dollars. The engagement goal typemay be based on the billing mechanism or revenue model for charging foran ad, such as cost per click (CPC) or cost per engagement (CPE) modelsfor determined performance of your campaign. Engagement may be definedwhen a user response to the ad through the act of experiencing thefeatures of the ad format. The response type goal may be based on anumber of responses via the advertisement A response type goal mayinclude a cost per acquisition (CPA), in which payment is based on leadsgenerated for a site. Based on the goal type selected, the user mayfurther specific a goal value and a maximum bid. The goal value andmaximum bid may be based on the type of goal selected, for example, thevalue of a CPA goal may be the goal value and the advertisement iswilling to spend a maximum bid per unit specified by the goal type.

The bid management of the campaign strategy may specify one or moreconstraints, which may include temporal constraints, frequency biddingconstraints, and budget spend and per placement constraints. The bidmanagement may include constraints on sites for placements and/or supplysources (e.g., exchanges) that may be used for bidding or placing ads.The user may specify a constraint of a budget pace in which apredetermined amount of dollars of the total budget may be spent on perhourly, daily, weekly or monthly basis and at certain time during thetime period, such as soon as possible during the time period or spreadevenly across the time period. The user may specify a constraint of aplacement frequency or cap in which a predetermined amount of placementsmay be placed on a per hourly, daily, weekly or monthly basis and atcertain time during the time period, such as soon as possible during thetime period of spread evenly across the time period. The user mayspecify a constraint on which aggressive the bidder should be in placingbids for placement of an ad. The user may specify a constraint on anyscale from being least aggressive to most aggressive. The user mayspecify a constraint of sites in which placements may occur, which mayrange from user selected sites to DSP selected sites and from less safesites to more safe sites. The user may specify a constraint of exchangesin which placements may occur, such as only on user selected exchangesto all DSP supported exchanges.

Referring now to FIG. 2K, a flow diagram depicts embodiments of stepstaken in a method 280 for matching, by a demand side service, anadvertisement with an impression of a plurality of impressions availableacross a plurality of impression opportunity providers. The methodincludes receiving, by a demand side service executing on one or moreservers, a request to bid for placement of an advertisement on one ormore impression opportunities from a plurality of impressionopportunities available across a plurality of impression opportunityproviders (281). The demand side service provides to a requestor of therequest a single interface for bidding on impression opportunitiesacross different impression opportunity providers (283). The demand sideservice determines an impression opportunity from the plurality ofimpression opportunities to bid on (285). The demand side servicecommunicates, via a network, one or more bids via an interface to animpression opportunity provider of the plurality of impressionopportunity providers (287). The demand side service completes atransaction to procure the impression opportunity from the impressionopportunity provider responsive to a winning bid from the one or morebids (289).

Referring now to FIG. 2K, and in greater detail, the method includesreceiving, by a demand side service executing on one or more servers, arequest to bid for placement of an advertisement on one or moreimpression opportunities from a plurality of impression opportunitiesavailable across a plurality of impression opportunity providers (281).An advertiser or client may configure a bid, or request a bid forplacement of an advertisement through the DSP. The advertiser or clientmay make a request for placement of an advertisement for an ad campaign.The advertiser or client may select or configure an ad campaign via theDSP user interface as described above in connection with FIGS. 2A-2C and2J As discussed, the advertiser or client may provide one or more goals,constraints, ad pixels and/or ad tag creatives for populating,configuring and launching an ad campaign. Accordingly, the receivedrequest may include one or more goals for an ad campaign. The DSP mayalso receive the request including one or more constraints for placementof the advertisement or execution of the ad campaign The advertiser orclient may, in some embodiments, send a request to configure or activateone or more flights for the ad campaign.

The DSP may provide access to impression opportunities from a pluralityof impression opportunity providers such as ad exchanges. The advertiseror client may identify, select or place selection constraints on the DSPfor selecting impression opportunity providers or placing bids withimpression opportunity providers. The DSP may receive the request to bidfor placement of an advertisement via an active ad campaign. The DSP mayreceive the request to bid for placement of an advertisement based on apre-selected and/or configured flight.

The DSP may receive notification from one or more impression opportunityproviders on the availability of one or more impression opportunities.In some embodiments, the DSP receives biddable request from an exchange.The DSP may process and/or convey the availability of the one or moreimpression opportunities to one or more ad campaigns, e.g., to solicit arequest for a bid. In response to the availability of the one or moreimpression opportunities, a bidder on behalf of an ad campaign mayrequest or issue a bid on at least one of the one or more impressionopportunities. In some embodiments or situations, such as when availableimpression opportunities do not meet the constraint(s) and/or goal(s) ofan ad campaign, the bidder may determine not to issue a request to bid.In certain embodiments, the DSP may receive more than one request to bidon an impression opportunity, for example, from multiple ad campaigns oradvertisers. The bidder of the DSP may make a plurality of bids on animpression opportunity for a plurality of campaigns.

In further details of 283, the demand side service provides to arequestor of the request a common or unified interface referred to as asingle interface for bidding on impression opportunities across multipleimpression opportunity providers. The requestor may be an advertiser,client, ad campaign, flight, or a bidding engine operating on behalf ofany of these entities. The DSP may provide an interface for configuringan ad campaign and one or more ad flights to access one or moreimpression opportunity providers. The DSP may provide an interface to anadvertiser or client to receive or view any form or type of statistics,analytics, historical records, estimates and/or projections related toimpression opportunities, bids and/or conversions. The DSP may provideany of these information via the interface to help an advertiser orclient design or select an ad campaign. The DSP may provide any of theseinformation via the interface to help the requestor make a particularbid, or execute a particular bidding strategy. The interface mayincorporate any of the interface features described above in connectionwith FIGS. 2A-2C and 2J.

In some embodiments, the demand side service or DSP provides to arequestor of the request a single interface for bidding on impressionopportunities across different data interfaces to the plurality ofimpression opportunity providers. The DSP may include one or moreinterfaces to the one or more impression opportunity providers. Theseinterfaces may include one or more custom interfaces and incorporate anyof the features described above in connection with FIGS. 2A-2D. Incertain embodiments, some of these interfaces communicate with therespective providers using different protocols, standards, data format,and communication frequency (e.g., frequency of impression opportunityupdates, bid submission, etc). The DSP may normalize the data receivedfrom each provider. The normalization process may incorporate any of thenormalization features described above, such as in connection with FIGS.2A-2G and method 250.

Referring now to 285, the demand side service determines an impressionopportunity from the plurality of impression opportunities to bid on.The DSP may determine an impression opportunity to bid on via one ormore of the following: a brain engine of the DSP, a bidding engine ofthe DSP, and an ad campaign. The DSP may determine an impressionopportunity to bid on based on one or more of the following: an adcampaign, and the request for placement of the advertisement, historicalrecords (e.g., prior success rate and client preferences). For example,the DSP may determine the impression opportunity to bid on based on agoal and/or constraint of an ad campaign. The DSP may determine animpression opportunity to bid on based on a goal and/or constraintspecified by the request. Some of the various types of goals andconstraints are described above in connection with FIGS. 2A-2F and 2J.For example, the DSP may select an impression opportunity from theplurality of impression opportunities based on demographics that may beexposed to the impression. The DSP may select an impression opportunitybased on one or more of: a specified budget, spend rate, bid frequency,day part, week part, ad campaign progress, and number of availableproviders. The bidding engine may generate or provide bidding ruleswhich correspond to the goals and/or constraints of a campaign and/orany flights of the campaign. The bidding engine may use these biddingrules in placing bids to exchanges.

The DSP may determine one or more impression opportunities to bid onbased on an estimate of daily impression opportunities across theplurality of impression opportunity providers. An impression calculatorof the DSP (e.g., residing in the bidding engine) may calculate,aggregate, estimate and/or project the number and types of dailyimpression opportunities across one or more impression opportunityproviders. The DSP may determine whether to bid on an impressionopportunity based on the provider of the impression opportunity, thefrequency of availability of a type of impression, the total number ofavailable impression opportunities, the type of impression opportunities(e.g., corresponding to a segment, channel, daypart, etc). In certainembodiments, the DSP may bid for an impression via different impressionopportunities offered by different providers. The DSP may bid for animpression via one provider but not another provider, for example, basedon constraints, historical data and/or client preferences configured inan ad campaign.

In further details of 287, the demand side service communicates one ormore bids via an interface to an impression opportunity provider of theplurality of impression opportunity providers. The DSP or service maycommunicate a bid via a general or custom interface to one or moreimpression opportunity providers. The DSP may communicate the bid usingany form or type of communication protocols. The protocols forcommunication may be standard, custom or proprietary. In someembodiments, the DSP communicates, via the interface, instructions forgenerating one or more bids to an intermediary. The intermediary may usethe instructions to submit a bid on behalf of the DSP, e.g., in realtime, or when an impression opportunity arises. The DSP may use any ofthe request and response parameters specified in FIGS. 2H and 2Icorresponding to particular exchange.

The DSP may configure the communication or bid to address latency issuesin the network(s). For example, the DSP may attempt to respond faster toan impression opportunity, compress the communication and/or direct thecommunication through preferred intermediaries to reduce communicationslatency. The DSP may address security and/or reliability issues whencommunicating a bid, for example, by using encryption, establishing adedicated communications link and/or negotiating a preferred servicelevel with a provider.

In certain embodiments, prior to submitting a bid, a bidding engine ofthe demand side service determines a price of a bid based on one or morebidding rules. The brain engine of the DSP may provide the one or morebidding rules to the bidding engine based on one or more of: aconfiguration of an ad campaign and flight. The brain engine of the DSPmay generate and/or update the one or more bidding rules based onconstraints and goals specified by the client or ad campaign. The brainengine of the DSP may generate and/or update the one or more biddingrules based on historical data, for example past successful bid pricesand success rate. The brain engine of the DSP may generate and/or updatethe one or more bidding rules based on the spend rate, budget, andspending profile over one or more flights. In some embodiments, thebidding engine determines not to submit a bid to an impressionopportunity based on any of the factors discussed above.

In some embodiments, the bidding engine matches a bid to a providerbased on the impression opportunity selected for bidding. The biddingengine may match a bid to a specific interface provided for animpression opportunity provider, based on the impression opportunityselected for bidding. The bidding engine may direct a bid to aninterface with the matching provider. In some embodiments, a routingagent of the DSP communicates a bid to the DSP interface of a matchingprovider.

A provider receiving a bid may respond to a bid, indicating whether thebid was successful. The provider may provide additional informationabout a failed bid, for example, the bid price of the winning bid. Theprovider may provide additional information about a winning bid, forexample, transaction fees, the location of the impression relative to awebpage, and information about the layout of the webpage hosting theimpression. The bidding engine may monitor the interface to eachprovider for a response to a submitted bid. The interface may convey thebid response to the bidding engine. In response to a failed bid, thebrain engine may update the one or more rules provided to the biddingengine. The bidding engine may determine whether to submit another bid,if the target impression opportunity is not already won. The biddingengine may determine a new price for a follow-up bid to the sameimpression opportunity. The bidding engine may submit and monitor one ormore bids through multiple providers for the same impressionopportunity. The bidding engine may submit one or more successive bidsfor the same impression opportunity during an availability period forbidding. In some embodiment, a bidding engine may automatically and/orsuccessively bid, starting from a floor price up to a ceiling price, inan attempt to get a winning bid.

Referring now to 289, the demand side service completes a transaction toprocure the impression opportunity from the impression opportunityprovider responsive to a winning bid from the one or more bids. The DSPmay complete the transaction via the interface assigned to theimpression opportunity provider. In some embodiments, the DSP may updatethe communications link or establish a new communications link with theprovider to complete the transaction. For example, the DSP may establisha link to transmit payment information. The DSP may establish a linkbetween an ad server and the provider (e.g., ad exchange) to deliver theadvertisement. In certain embodiments, the DSP establishes a linkbetween the ad server and the publisher to deliver the advertisement.

The DSP may automatically deliver an advertisement to the procuredimpression opportunity. In the request and response protocol with and/orinterface to the exchange, the DSP may identify or provide informationfor the ad or the ad to the exchange for delivery or placement to theprocured impression opportunity. The DSP may deliver a creative oridentification of the creative (e.g., the advertisement) to the exchangefor the procured impression opportunity. The DSP may deliver a pixel tothe procured impression opportunity. The DSP may deliver an ad creativetag to the procured impression opportunity. The DSP may select one of aplurality of advertisements to the procured impression opportunity basedon information received from the provider. For example, the DSP mayselect an advertisement based on the layout, style and/or color schemeof the webpage or site hosting or providing the impression. In someembodiments, the DSP directs the procured impression opportunity toaccess an ad server. The DSP may complete the transaction within a shorttimeframe to minimize latency for populating the impression with theadvertisement. In certain embodiments, the DSP may provide anadvertisement to a provider for local storage, prior to bidding. Theprovider may locally access the advertisement responsive to a winningbid.

C. Attribution of a Conversion to an Impression Opportunity

In another aspect, the present invention is related to methods andsystems for attributing an user event to an impression opportunity. Theimpression opportunity may be procured through a DSP. The impressionopportunity may be served and tracked via the DSP. The DSP may associateor track each impression opportunity with a creative tag. The DSP mayassociate or track each user event with an event tag. The DSP mayassociate or match an event tag with a creative tag based at least inpart on proximity of an user event corresponding to the event tag to anavailability of an impression opportunity corresponding to the creativetag. The DSP may attribute an user event to a viewing of an impressionopportunity based on one or more event tags and creative tags. The DSPmay attribute an user event to a click or other action to an impressionopportunity based on one or more event tags and creative tags.

Attribution may be defined as a process to associate a conversion oruser event to an impression opportunity or advertisement. A conversionor user event may be any event defined as a significant, desired and/orsuccessful event as determined by an advertiser. A conversion or userevent may include but is not limited to an order, a pre-order, apurchase, a registration, a newsletter sign-up, a credit card sign-up, anotification request, a request for more information, loading or savingan item into a user's shopping cart, responding to a survey, initiatingan online or telephonic query to an operator, performing a price check,requesting and/or downloading informational material, and requestingand/or using a discount code or coupon. In some embodiments, events maybe classified into different levels (e.g., of significance orimportance). Pixels or tracking code may be used to track events and/oradvertising activities. Accordingly, attribution may refer to a processto associate a pixeled conversion or user event to pixel activities(e.g., impression views, clicks, landing pages) from a campaign.Attribution may provide a mechanism for monitoring or determiningcampaign performance and/or for conducting analysis activities.Attribution may indicate causality between an advertisement and apurchase or other user event.

The systems and methods described herein can provide for various typesof attribution, including post view attribution (PVA) and post clickattribution (PCA). In some embodiments, PVA is the process of takingsome or all event records and matching these event records by advertiserand unique user identifier (UUID) to impressions. In other words, anevent record identifying an advertiser and a user can be matched withone or more impressions identifying the same advertiser and user. Eventrecords spanning any period of time may be processed. In one embodiment,thirty (30) days of prior impressions (e.g., with respect to a userevent) can be included in an attribution process. The process (e.g.,performed by the brain engine) may identify matching event recordscorresponding to the same user and/or advertiser. In some embodiments,one event can be mapped to multiple impressions. The process may selectthe impression having a date-time stamp closest to and less than (e.g.,occurs or stamped before) the event. Matched user events may be referredto as Post View (PV) Attributed Events. In some embodiments, theimpression date-time is determined or subtracted from event date-time toyield a PV timelag. The attributed event may be logged in an event table(e.g., in the data warehouse) with the PV timelag. In certainembodiments, the attributed event may be logged in the event tablewithout a PV timelag.

In some embodiments, PCA is a process of taking non-click PV AttributedEvent records by advertiser and UUID, and matching these records to PVAttributed Events associated with a click. In some other embodiments,PCA is a process for taking some or all event records and matching theseevent records by advertiser and UUID to impressions accompanied by aclick. A click may be a mouse-click or any other user action thattriggers some response from an ad. A user action may comprise actuationof any input device or controller, such as a remote control, mouse,track ball, touch pad, touch screen, keyboard and joystick. Any timeperiod, such as up to 30 days of prior click events, can be included inthe attribution process. The process may identify record matches and mayselect the closest click event whose date time stamp is less than theevent. This click event is sometimes referred to as a Post Click (PC)Attributed Event. The click event date-time may be subtracted from eventdate time to generate a PC timelag. Each attributed event may be loggedin the event table with or without the PC timelag.

A conversion may be identified as a post view conversion. In oneembodiment, a post view conversion is a campaign merit or success eventthat follows a user view of an impression within a defined period oftime. An availability of the impression to a user may be considered a“user view”; the user may or may not have consciously or subconsciouslyviewed the impression advertisement. This period of time may beidentified or defined at the campaign level. This period may set awindow for which the DSP provider (e.g., MediaMath) or system can get‘credit’ or be attributed for the conversion by facilitating theimpression or advertisement.

In some embodiments, a conversion may be identified as a post clickconversion. In certain embodiments, a post click conversion is acampaign merit or success event that follows a user click on animpression within a defined period of time. In at least someembodiments, click conversions are a subset of PV Conversions bydefinition as the user would have viewed the impression to click on it.This period of time may be identified at the campaign level. This periodmay define the window for which the DSP provider or system can assume‘credit’ or be attributed for the conversion. The window for a postclick may typically be longer than the window for post view. PV and PCconversions may be calculated and/or reported from the DSP system,independent of each other.

By way of illustration and not intended to be limiting, an attributionprocess may include any one or more of the following steps or stages:(i) process Event(s) to Impression(s) to calculate matches and PVtimelag, (ii) process non-click Event(s) to click Event(s) to calculatematches and PC timelag, (iii) identify a ‘Merit (event) Pixel’ at thecampaign level, (iii) identify the PC window and PV window for the‘Merit Pixel’ at the campaign level, and (iv) where an Event Pixelidentifier is matched with a Merit Event pixel identifier, PC and PVconversions may be counted within the respective windows.

Referring to FIG. 3A, a block diagram architectural overview of anattribution process is depicted. Various types of media may becategorized as display advertising, search-related, and others. Thesemedia categories may be associated with user actions resulting in, orprogressing to a landing page, funnel, and/or conversion. In someembodiments, the goal of an attribution process includes accuratelyidentifying which impression, landing page and funnel pages areassociated on a one-to-one basis with a conversion. The brain engine mayfilter or remove non-DSP-generated events from the attribution process,e.g., to provide accurate attribution reports based on DSP-facilitatedconversions. An advertiser using the DSP system can keep track of dailytransactions by clients, ad campaigns, creatives, etc.

In some embodiments, pixels, tags, cookies or tracking code installed onan advertiser's site is activated and information (e.g., userinformation) is collected for some or all impressions (e.g., displayevents or search events). A PV window may be defined (e.g., a seven dayperiod) for analysis by the attribution process. When a conversiontransaction occurs for a UUID, the brain engine may scan the PV windowfor all impression events related to the UUID. The brain engine may thenfilter out impression events that are not associated with thecorresponding advertiser identifier. In another embodiment, when aconversion transaction occurs for an advertiser, the brain engine mayscan the PV window for all impression events related to the advertiser.The brain engine may then filter out impression events that are notassociated with the corresponding UUID. In one embodiment, anon-filtered impression event most recent to the conversion may receivecredit for the conversion (e.g., attributed to the conversion).

In some embodiments, creative tags (sometimes referred to as “creativeMathTags”) and/or (user event) event tags (sometimes referred to as“event MathTags”) may be used in the attribution process. For exampleand in one embodiment, a creative MathTag may be, or provide at leastsome features of a pixel, cookie or tracking code. An event tag may be,or provide at least some features of an user event record. Thus,attribution may refer to a process of relating an event MathTag to acreative MathTag to link an impression seen by a user to an eventcompleted by a user. An attribution window may refer to a time periodduring which an impression is served and during which an event can beattributed to the impression. In many campaigns, a post-view andpost-click window can be defined (e.g., by the advertiser via the DSPinterface).

The attribution process may include a number of rules and/or components.By way of illustration, each event MathTag or creative MathTag may beassociated with a user. A user may be identified by a UUID which can beany type or form of identifier. For example, the UUID may be anyalphanumeric string, such as 496ed7ef-0d3a-4aec-bf10-d45cfba39a9d. Auser identified in the event MathTag data may be presented with one ormore impressions (e.g., via the DSP). Each event MathTag or creativeMathTag may have an associated timestamp. A user may see the one or moreimpressions before a user event occurs (e.g., Event Timestamp>impressionTimestamp). A user may see one or more impressions after a user eventoccurs (Event Timestamp<impression Timestamp), which may or may not besignificant. Each event MathTag or impression MathTag may be associatedwith an advertiser. A user may see one or more impressions from one ormore advertisers. A user may perform an action (event) on one or moreadvertisers' websites. A timelag may refer to the difference between theevent Timestamp and impression Timestamp. In some embodiments, a Timelagshould be positive. After attribution, information about the impressioncan be attached to the attributed event's record. This information maybe retrieved from creative MathTag fields associated with the impressionand may be copied or processed into event MathTag fields associated withthe event. Affected fields may include any one or more of, but is notlimited to, source, campaign, creative_id, line_item_id, publisher_id,price and price_type.

In some embodiments, if a user sees an impression served via a DSP, auser event is attributed to the most recent impression presented beforethe user event. This aspect of the attribution may be illustrated, in annon-limiting embodiment, by the following pseudo code:

If   Event Advertiser = IMP Advertiser AND   Event User = IMP User AND  Event Timestamp > IMP Timestamp Then   Event source = IMP source  Event campaign = IMP campaign   Event creative_id = IMP creative_id  Event line_item_id = IMP line_item_id   Event publisher_id = IMPpublisher_id   Event price = IMP price   Event price_type = IMPprice_type   Timelag = Event Timestamp − IMP Timestamp (in seconds)

In some embodiments, attribution is a feature provided by an audienceanalysis module of the brain engine. The audience analysis module issometimes referred to as an attribution module or component of the brainengine or DSP. Audience analysis, including attribution, may providedeeper insights into the user population exposed to online advertising.The goals of the audience analysis, including attribution, includesproviding advertisers and interested parties with the ability to groupaudiences into segments based on intelligent analysis of available datain order to purchase media differently (bid or traditional buys) and/orprovide advertiser insights acting as the agency advocate, for example.The audience analysis module may use MathTags to provide such userinsights. For example, creative MathTags can be used to log geographicand other attributes for every exposure to a user. Event MathTags can beused to log attributes of a user performing an action on a client'sadvertising site. The DSP system may be configured to dynamically passnumeric and alphanumeric values via event MathTags and/or creativeMathTags. In one embodiment, examples of dynamically-passed valuesincludes Order Numbers, Cart Size and Revenue. DSP modules providingreporting and yield analysis features can access any of these CreativeMathTag and event MathTag data for processing (e.g., client reportingand for decisioning).

MathTag values may be dynamically passed to the audience analysis modulefor processing. The audience analysis module may generate any type orform of data structure (e.g., table, lists, chart, database) that can beused for client reporting and for decisioning. For example and in oneembodiment, an audience analysis table may be generated and maintainedin the mm_reporting database. This table may include attribution data.In some embodiments, the output of an attribution process is directedinto an audience analysis table.

In one embodiment, Table 1 shows MathTag fields that may be used inperforming audience analysis. Table 1 also provides an example of validdimension names and/or other field values. In another embodiment, thesefields are the minimum required fields for audience analysis. In yetanother embodiment, the shaded fields are the minimum required fieldsfor audience analysis.

TABLE 1 Data Structure for audience analysis

In some embodiments, the shaded fields in Table 2 are part of a primarykey. Audience analysis data may be generated, presented or summarizedfor the primary key. In certain embodiments, granularity at the UUIDlevel may not be needed for presenting audience analysis data. Theasterixed field(s), e.g., mt_count, may refer to metrics. The otherfields (e.g., non-shaded), may include user level data and/or dimensionfields. In one illustrative embodiment, the audience analysis modulereceives, from application and data sources, six dynamic MathTag values,three numeric values (v0, v1, v2) and three string values 16 charactersin length (s0, s1, s2). Passed values s0, s1 and s2 may be treated asdimensions. Passed values v0, v1, and v2 may be treated as metrics thatcan be aggregated. If the v0, v1, and v2 values cannot be aggregated orsummed, the DSP may change the tag implementation and pass the values ass0, s1 or s2.

The audience analysis module or data structure may receive any type orform of data from creative MathTags. For each creative MathTag record,the values for audience analysis may be subject to the followingillustrative rules:

-   -   the “primary key” fields are populated from creative MathTag log        values    -   mm_pixpgetyp=‘imp’    -   timelag=NULL    -   v0=NULL    -   v1=NULL    -   v2=NULL    -   mt_count=NULL

In some embodiments, for each unique primary key, the audience analysismodule may insert a creative MathTag record in the audience analysisdata structure with the following illustrative dimension and metricvalues:

-   -   dimension_name=NULL    -   dimension_value=NULL    -   mt_count=[COUNT OF cMTs FOR THE PRIMARY KEY]

In some embodiments, for each unique combination of primary key,dimension name and dimension value, the audience analysis module mayinsert a creative MathTag record in the audience analysis data structurewith the following illustrative dimension and metric values:

-   -   dimension_name=[DIMENSION_NAME]    -   dimension_value=[DIMENSION_VALUE]    -   mt_count=[COUNT OF cMTs FOR THE COMBO OF PRIMARY KEY, DIMENSION        NAME, DIMENSION VALUE]

In some embodiments, the audience analysis module may populate theaudience analysis data structure with event MathTags. For each eventMathTag record, the values for audience analysis may be subject to thefollowing illustrative rules:

-   -   the eMT “primary key” fields may be populated from the        attributed event MathTags log values    -   mm_pixpgetyp=[PIXEL PAGE TYPE]**may be treated as part of the        primary key    -   timelag=[ATTRIBUTION TIMELAG]**may be treated as part of the        primary key    -   mt_count=NULL

In some embodiments, for each unique primary key, the audience analysismodule may insert an event MathTag record in the audience analysis datastructure with the following illustrative dimension and metric values:

-   -   dimension_name=NULL    -   dimension_value=NULL    -   v0=[SUM OF PASSED VALUES v0 FOR THE PRIMARY KEY]    -   v1=[SUM OF PASSED VALUES v0 FOR THE PRIMARY KEY]    -   v2=[SUM OF PASSED VALUES v0 FOR THE PRIMARY KEY]    -   mt_count=[COUNT OF eMTs FOR THE PRIMARY KEY]

In some embodiments, for each unique combination of primary key,dimension name and dimension value, the audience analysis module mayinsert an event MathTag record in the audience analysis data structurewith the following illustrative dimension and metric values:

-   -   dimension_name=[DIMENSION_NAME]    -   dimension_value=[DIMENSION_VALUE]    -   v0=[SUM OF PASSED VALUES v0 FOR THE COMBO OF PRIMARY KEY,        DIMENSION NAME, DIMENSION VALUE]    -   v1=[SUM OF PASSED VALUES v0 FOR THE COMBO OF PRIMARY KEY,        DIMENSION NAME, DIMENSION VALUE]    -   v2=[SUM OF PASSED VALUES v0 FOR THE COMBO OF PRIMARY KEY,        DIMENSION NAME, DIMENSION VALUE]    -   mt_count=[COUNT OF eMTs FOR THE COMBO OF PRIMARY KEY, DIMENSION        NAME, DIMENSION VALUE]

In some embodiments, Table 2 provides an example of an embodiment ofrecords for audience analysis

TABLE 2 Example of Records for audience analysis interval sourcemm_advsym mm_campaign mm_pixpgetyp mm_pixshrtnme creative_idcreative_name lineitem_id Aug. 18, 2008 RMX PROA C1_RMX IMP NULL 123 R,!PROA, 1234 !C108_RMX, !R . . . Aug. 18, 2008 RMX PROA C1_RMX IMP NULL8950 R, !PROA, 1234 !C108_RMX, !R . . . Aug. 18, 2008 RMX PROA C1_RMXMRT TY 123 R, !PROA, 1234 !C108_RMX, !R . . . Aug. 18, 2008 RMX PROAC1_RMX MRT TY 123 R, !PROA, 1234 !C108_RMX, !R . . . Aug. 18, 2008 RMXPROA C1_RMX MRT TY 123 R, !PROA, 1234 !C108_RMX, !R . . . Aug. 18, 2008RMX PROA C1_RMX MRT TY 123 R, !PROA, 1234 !C108_RMX, !R . . . Aug. 18,2008 RMX PROA C1_RMX LPG PROA- 8950 R, !PROA, 1234 HP !C108_RMX, !R . .. Aug. 18, 2008 RMX PROA C1_RMX IMP NULL 123 R, !PROA, 1234 !C108_RMX,!R . . . Aug. 18, 2008 RMX PROA C1_RMX IMP NULL 8950 R, !PROA, 1234!C108_RMX, !R . . . Aug. 18, 2008 RMX PROA C1_RMX MRT TY 123 R, !PROA,1234 !C108_RMX, !R . . . Aug. 18, 2008 RMX PROA C1_RMX MRT TY 123 R,!PROA, 1234 !C108_RMX, !R . . . Aug. 18, 2008 RMX PROA C1_RMX MRT TY 123R, !PROA, 1234 !C108_RMX, !R . . . Aug. 18, 2008 RMX PROA C1_RMX MRT TY123 R, !PROA, 1234 !C108_RMX, !R . . . Aug. 18, 2008 RMX PROA C1_RMX LPGPROA- 8950 R, !PROA, 1234 HP !C108_RMX, !R . . . Aug. 19, 2008 RMX PROAC1_RMX MRT TY 123 R, !PROA, 1234 !C108_RMX, !R . . . Aug. 19, 2008 RMXPROA C1_RMX MRT TY 123 R, !PROA, 1234 !C108_RMX, !R . . . Aug. 19, 2008RMX PROA C1_RMX MRT TY 123 R, !PROA, 1234 !C108_RMX, !R . . . Aug. 19,2008 RMX PROA C1_RMX MRT TY 123 R, !PROA, 1234 !C108_RMX, !R . . . Aug.19, 2008 RMX PROA C1_RMX LPG PROA- 123 R, !PROA, 1234 HP !C108_RMX, !R .. . Aug. 19, 2008 RMX PROA C1_RMX LPG PROA- 123 R, !PROA, 1234 HP!C108_RMX, !R . . . Aug. 19, 2008 RMX PROA C1_RMX LPG PROA- 8950 R,!PROA, 1234 HP !C108_RMX, !R . . . Aug. 19, 2008 RMX PROA C1_RMX LPGPROA- 123 R, !PROA, 1234 HP !C108_RMX, !R . . . Aug. 19, 2008 RMX PROAC1_RMX LPG PROA- 123 R, !PROA, 1234 HP !C108_RMX, !R . . . Aug. 19, 2008RMX PROA C1_RMX LPG PROA- 8950 R, !PROA, 1234 HP !C108_RMX, !R . . .interval lineitem_name publisher_id timelag dimension_namedimension_value v0 v1 v2 mt_count Aug. 18, 2008 PROA, !GRC, !C108 nullNULL NULL NULL NULL null null 868904 RMX, ! Aug. 18, 2008 PROA, !GRC,!C108 null NULL NULL NULL NULL null null 98562 RMX, ! Aug. 18, 2008PROA, !GRC, !C108 null 60 NULL NULL 25.96 null null 1 RMX, ! Aug. 18,2008 PROA, !GRC, !C108 null 60 NULL NULL 57.69 null null 1 RMX, ! Aug.18, 2008 PROA, !GRC, !C108 null 120 NULL NULL 23.96 null null 1 RMX, !Aug. 18, 2008 PROA, !GRC, !C108 null 65 NULL NULL 97.96 null null 1 RMX,! Aug. 18, 2008 PROA, !GRC, !C108 123 60 NULL NULL 65.56 null null 1RMX, ! Aug. 18, 2008 PROA, !GRC, !C108 null NULL ISP TWC NULL null null134945 RMX, ! Aug. 18, 2008 PROA, !GRC, !C108 null NULL ISP PacBell NULLnull null 1000 RMX, ! Aug. 18, 2008 PROA, !GRC, !C108 null 5 State NY25.96 null null 1 RMX, ! Aug. 18, 2008 PROA, !GRC, !C108 null 60 StateNY 57.69 null null 1 RMX, ! Aug. 18, 2008 PROA, !GRC, !C108 null 60State NE 23.96 null null 1 RMX, ! Aug. 18, 2008 PROA, !GRC, !C108 null60 State CA 97.96 null null 6 RMX, ! Aug. 18, 2008 PROA, !GRC, !C108 45660 ISP Comcast 65.56 null null 3 RMX, ! Aug. 19, 2008 PROA, !GRC, !C108null 60 s0 EAO2153 29.99 null null 1 RMX, ! Aug. 19, 2008 PROA, !GRC,!C108 null 60 s0 EAO21459 24.99 null null 1 RMX, ! Aug. 19, 2008 PROA,!GRC, !C108 null 120 s0 EAO8733 19.99 null null 1 RMX, ! Aug. 19, 2008PROA, !GRC, !C108 null 65 s0 EAO8793 12 null null 1 RMX, ! Aug. 19, 2008PROA, !GRC, !C108 null 60 s0 EAO9475 9.99 null null 1 RMX, ! Aug. 19,2008 PROA, !GRC, !C108 null 60 s1 NY 8965.55 null null 32 RMX, ! Aug.19, 2008 PROA, !GRC, !C108 null 30 s1 NY 489.65 null null 8 RMX, ! Aug.19, 2008 PROA, !GRC, !C108 null 5 s1 CA 4567.71 null null 25 RMX, ! Aug.19, 2008 PROA, !GRC, !C108 null 60 s1 NY 24.99 null null 1 RMX, ! Aug.19, 2008 PROA, !GRC, !C108 null 60 s1 TX 1600.23 null null 1 RMX, !

In some embodiments, the fields creative_name and line_item_name in theaudience analysis data structure may be populated from ad exchangesource tables (e.g., rmx_pixel_daily and adx_table_(—)1) via the DSPreporting interfaces and/or databases (e.g., mm_reporting database). Incertain embodiments, the fields line_item_id and creative_id inaudience_analysis are respectively matched with creative_id andline_item_id fields in ad exchange source tables. In some embodiments, amt_passed_values_reference table in the mm_reporting database may begenerated or maintained to store the definitions or meanings of thevalue ids (v0, s0, etc.) for each campaign. Table 3 shows an example ofone embodiment of a mt_passed_values_reference data structure. Table 4shows an example of one embodiment of records for amt_passed_values_reference data structure.

TABLE 3 Data Structure for mt_passed_values_reference FIELD DATA TYPENULLABLE mm_advsym varchar(4) no mm_campaign varchar(16) yes typevarchar(2) no reference varchar(255) no

TABLE 4 Example Records for mt_passed_values_reference mm_advsymmm_campaign type reference AXPG Aug-GftCrd v0 Cart Size AXPG Aug-GftCrdv1 Cart Value AXPG Aug-GftCrd v2 null AXPG Aug-GftCrd s0 Order NumberAXPG Aug-GftCrd s1 State AXPG Aug-GftCrd s2 ISP

In some embodiments, MathTags are structured to reference identifiers ofcertain information so a lookup based on identifiers may be required tofulfill reporting needs. In some embodiments, the audience analysismodule can respond to any ad hoc or schedule queries. For ad hocqueries, the audience analysis module may be configured to respondwithin a set period of time, e.g., 15 minutes. Audience analysis datamay be periodically generated. e.g., audience analysis data for theprior day may be available at daily intervals by 12:00 pm.

In some embodiments, at least part of the attribution process isperformed by a database management and/or processing module, portions ofwhich may be operating with the brain engine and/or residing in thebrain engine. In some embodiments, functionality for the databasemanagement and/or processing module is provided by or configured fromhardware and/or software provided by Oracle Systems. The databasemanagement and/or processing module may sometimes be referred to asoracle module. FIGS. 3B-3D show one embodiment of systems and methodsfor communicating MathTag data from log files to the oracle module forattribution processing. The oracle module may generate output facttables which may include or be used to generate attribution reports.FIG. 3E shows one embodiment of fact tables generated by the attributionprocess.

The oracle module can receive MathTag data via any way, for example, viaspreadsheet formats or data structures. In one illustrative embodiment,the DSP system parses MathTag log files into .csv format. These .csvfiles can be imported into the attribution process. In one embodiment,the DSP system generates one or more .csv files per day. The DSP systemmay create one or more .csv files for each pixel page type (e.g.,mm_pixpgetyp). The DSP system may name the csv file in a certainconvention for processing, e.g., mathtag_[pixgetyp].csv Table 5 showsone embodiment of a parsed MathTag log file data structure in csvformat. The data structure may include geo attributes for use in theattribution process. The geo attributes may be appended to each MathTagrecord based on IP address, for example. Table 6 shows one embodiment ofvalid mm_pixpgetyp values and filenames.

TABLE 5 Parsed MathTag Log File Structure (csv) FIELD DATA TYPE NULLABLEtimestamp int(11) no ip_addr varchar(15) no uuid varchar(100) no sourcevarchar(3) yes mm_advsym char(4) no mm_campaign_name varchar(50) yesmm_pixpgetyp char(3) no mm_pixshrtnme varchar(50) yes creative_idint(11) yes line_item_id int(11) yes publisher_id int(11) yes pricedouble yes price_type varchar(16) yes v0 double yes v1 double yes v2double yes s0 varchar(50) yes s1 varchar(50) yes s2 varchar(50) yescountry varchar(50) yes region varchar(50) yes city varchar(50) yeszipcode varchar(9) yes dma varchar(16) yes area_code varchar(16) yes ispvarchar(50) yes netspeed varchar(50) yes browser varchar(255) yes

TABLE 6 Valid Pixel Types (mm_pixpgetyp) for MathTag Log Parsing PIXELTYPES FILENAME imp mathtag_imp.csv lpg mathtag_lpg.csv lpcmathtag_lpc.csv mrt mathtag_mrt.csv fun (includes fun, fp0-fp9)mathtag_fun.csv red (includes red, rei) mathtag_red.csv other (includesmrd, mro, mrc, win) mathtag_other.csv junk (invalid pixels like ‘inp’)mathtag_badpix.csv

In some embodiments, prior to attribution, the oracle module maygenerate a fact_directional_site_analysis table to maintain and presentall event MathTags and/or event MathTags data. This table can be used toshow the geo data for some or all client site activities usingunattributed and attributed pixel page types. Table 7 shows oneembodiment of a structure for the fact_directional_site_analysis table.In some embodiments, valid pixel types include but are not limited to:MRT, LPG, LPC, FUN and OTHER. This directional table may include all orsome of the pixel types.

TABLE 7 fact_directional_site_analysis FIELD DATA TYPE NULLABLEtimestamp int(11) no datetime datetime default (0) ip_addr varchar(15)no uuid varchar(255) no mm_advsym char(4) no mm_pixpgetyp varchar(4) nomm_pixshrtnme varchar(50) yes v0 decimal(24) yes v1 decimal(24) yes v2decimal(24) yes s0 varchar(50) yes s1 varchar(50) yes s2 varchar(50) yesri varchar(50) yes browser varchar(255) yes other varchar(255) yesbatch_id int(11) no

In some embodiments, the oracle module may populate a temporaryunattributed event audit table, tbl_audit_unattributed_events. Theoracle module may determine a count of unattributed events to update orgenerate a tbl_audit_unattributed_events table. This table may be usedto validate attribution processes. Table 8 shows one embodiment of thestructure of the tbl_audit_unattributed_events structure table. EventMathTag records may be inserted into the tbl_audit_unattributed_eventstable when the event cannot be attributed during processing. Thetbl_audit_unattributed_events table may include records for each eventMathTag pixel page type (MRT, LPG, LPC, etc). After validation of theattribution processes, the table may be discarded as it loses its value.

TABLE 8 tbl_audit_unattributed_events FIELD DATA TYPE NULLABLE timestampint(11) no datetime datetime default (0) ip_addr varchar(15) no uuidvarchar(255) no mm_advsym char(4) no mm_pixpgetyp varchar(4) nomm_pixshrtnme varchar(50) yes v0 decimal(24) yes v1 decimal(24) yes v2decimal(24) yes s0 varchar(50) yes s1 varchar(50) yes s2 varchar(50) yesri varchar(50) yes browser varchar(255) yes other varchar(255) yesload_source varchar(25) yes batch_id int(11) no

In some embodiments, the oracle module generates one or morefact_[PIXPGETYP]_attribution tables after attribution. This table canmaintain and present attributed event MathTags by pixel page type. Oneembodiment of a fact_[PIXPGETYP]_attribution structure is depicted inTable 9.

TABLE 9 fact_[PIXPGETYP]_attribution FIELD DATA TYPE NULLABLE timestampint(11) no datetime datetime default (0) ip_addr varchar(15) no uuidvarchar(255) no mm_advsym char(4) no mm_pixpgetyp varchar(4) nomm_pixshrtnme varchar(50) yes creative_id int(11) yes creative_namevarchar(255) yes line_item_id int(11) yes line_item_name varchar(255)yes publisher_id int(11) yes price double yes price_type varchar(16) yestimelag int(11) yes v0 decimal(24) yes v1 decimal(24) yes v2 decimal(24)yes s0 varchar(50) yes s1 varchar(50) yes s2 varchar(50) yes rivarchar(50) yes browser varchar(255) yes other varchar(255) yes batch_idint(11) no

In some embodiments, the oracle module generates afact_[PIXPGETYP]_attribution table for each valid event MathTag pixelpage type. Valid pixel page types may include, but are not limited to:MRT, LPG, LPC, FUN and OTHER. The oracle module may determine a count ofattributed events to update one or more fact_[PIXPGETYP]_attributiontables. After attribution, values from the attributed impression may beappended to the event MathTag records. In one embodiment, fields carriedfrom the impression to the event MathTag record may include any one ormore of: source, campaign_name, creative_id, line_item_id, publisher_id,price, and price_type. After attribution, the event MathTags may receiveand incorporate a calculated timelag (timelag=event MathTagtimestamp−attributed creative MathTag timestamp). In one embodiment,timelag values are positive values.

After attribution, the brain engine may perform creative name lookupusing a creative_name lookup table. The DSP system may maintain andupdate a creative_name lookup table that includes distinct creative_ids,creative_name and unpacked fields. For each attributed event, the brainengine may update the creative_name field of the event into thefact_[PIXPGETYP]_attribution table by incorporating and/or joining thecreative_id and mm_date field values between the fact table and thecreative_name lookup table.

After attribution, the brain engine may perform line_item_name lookupusing a line_item_name lookup table. The DSP system may maintain andupdate, e.g., on a daily basis, the line_item_name lookup table. Thistable may include distinct line_item_ids, line_item_name and unpackedfields. For each attributed event, the brain engine may populate theline_item_name field of the event into the fact_[PIXPGETYP]_attributiontable by incorporating and/or joining the line_item_id and mm_date fieldvalues between the fact table and the line_item_name lookup table.

After attribution, the brain engine may replicate eachfact_[PIXPGETYP]_attribution table from mm_stg to mm_wh. The brainengine may replicate the fact_directional_site_analysis table frommm_stg to mm_wh. After replication, the brain engine may generate viewsthat join the Digital Envoy geoIP data to the fact tables. The brainengine may persist or update the Digital Envoy data in a tblex_geo_mapdata structure. In some embodiments, the output views may include theillustrative table structures shown in Table 10 and Table 11.

TABLE 10 view_[PIXPGETYP]_attribution_geo FIELD DATA TYPE NULLABLEtimestamp int(110 no mm_date datetime no ip_addr varchar(15) no uuidvarchar(255) no mm_advsym char(4) no mm_pixpgetyp varchar(4) nomm_pixshrtnme varchar(50) yes creative_id int(11) yes creative_namevarchar(255) yes line_item_id int(11) yes line_item_name varchar(255)yes publisher_id int(11) yes price double yes price_type varchar(16) yestimelag int(11) yes timelag_bin varchar(25) yes v0 decimal(24) yes v1decimal(24) yes v2 decimal(24) yes s0 varchar(50) yes s1 varchar(50) yess2 varchar(50) yes ri_imp int(11) yes ri_event int(11) yes time_of_dayvarchar(25) yes browser varchar(50) yes browser_version varchar(50) yesbrowser_OS_CPU varchar(50) yes browse_security varchar(50) yesbrowser_other varchar(50) yes other_event varchar(255) yes other_impvarchar(255) yes country varchar(50) yes region varchar(50) yes cityvarchar(50) yes conn_speed varchar(25) yes country_conf int(11) yesregion_conf int(11) yes city_conf int(11) yes metro_code int(11) yeslatitude int(11) yes longitude int(11) yes country_code int(11) yesregion_code int(11) yes city_code int(11) yes continent_code ber(3) yestwo_letter_country char(2) yes domain_name varchar(100) yes area_codeint(11) yes zip_code int(11) yes gmt_offset int(11) yes in_dstvarchar(8) yes zip_code_text varchar(15) yes zip_country varchar(12) yesisp_name varchar(100) yes homebiz_type varchar(50) yes proxy_typevarchar(50) yes rank int(11) yes households int(11) yes women int(11)yes w18_34 int(11) yes w35_49 int(11) yes men int(11) yes m18_34 int(11)yes m35_49 int(11) yes teens int(11) yes kids int(11) yes naics_codeint(11) yes batch_id int(11) no

TABLE 11 view_directional_site_analysis_geo FIELD DATA TYPE NULLABLEtimestamp int(11) no mm_date datetime no ip_addr varchar(15) no uuidvarchar(255) no mm_advsym char(4) no mm_pixpgetyp varchar(4) nomm_pixshrtnme varchar(50) yes v0 decimal(24) yes v1 decimal(24) yes v2decimal(24) yes s0 varchar(50) yes s1 varchar(50) yes s2 varchar(50) yesri int(11) yes time_of_day varchar(25) yes browser varchar(50) yesbrowser_version varchar(50) yes browser_OS_CPU varchar(50) yesbrowser_security varchar(50) yes browser_other varchar(50) yes othervarchar(255) yes country varchar(50) yes region varchar(50) yes cityvarchar(50) yes conn_speed varchar(25) yes country_conf int(11) yesregion_conf int(11) yes city_conf int(11) yes metro_code int(11) yeslatitude int(11) yes longitude int(11) yes country_code int(11) yesregion_code int(11) yes city_code int(11) yes continent_code ber(3) yestwo_letter_country char(2) yes domain_name varchar(100) yes area_codeint(11) yes zip_code int(11) yes gmt_offset int(11) yes in_dstvarchar(8) yes zip_code_text varchar(15) yes zip_country varchar(12) yesisp_name varchar(100) yes homebiz_type varchar(50) yes proxy_typevarchar(50) yes rank int(11) yes households int(11) yes women int(11)yes w18_34 int(11) yes w35_49 int(11) yes men int(11) yes m18_34 int(11)yes m35_49 int(11) yes teens int(11) yes kids int(11) yes naics_codeint(11) yes batch_id int(11) no

The brain engine may generate an output tbl_audit_analysis and/ortbl_mathtag_audit tables to persist aggregated creative MathTag andevent MathTag information for auditing. The oracle module may determinea count of impressions and/or events from the csv files to update one orboth of these tables. Table 12 shows one embodiment of a data structurefor the tbl_mathtag_audit table.

TABLE 12 Data Structure for tbl_mathtag_audit FIELD DATA TYPE NULLABLEmm_date date no mm_exchange char(3) yes mm_advertiser char(4) nomm_campaign varchar(50) yes mm_pagetype char(3) no mt_count_prestageint(11) default (0) mt_count_preattribution int(11) default (0)mt_count_attributed int(11) default (0) mt_count_directional int(11)default (0)

In some embodiments, the tbl_mathtag_audit and/or tbl_audit_analysistable summarizes creative MathTag and event MathTag record counts (e.g.,pre-attribution and post-attribution) for audit purposes. The brainengine may populate the mt_daily_analysis_attribution table followingcompleted attribution processes. The primary key of this table may be acombination of the mm_date, mm_advertiser, and mm_pagetype field values.The mm_exchange field may be required for creative MathTag records and‘null’ for event MathTag records. The mm_campaign field may be requiredfor creative MathTag records and ‘null’ for event MathTag records. Thebrain engine may populate the mt_count_prestage field with counts fromtblex_mathtag_[PAGETYPE]. Values in the mt_count_prestage field maymatch the counts in the mysql.mm_reporting.mt_daily_analysis table, whencompared by key fields (interval, source, etc).

The brain engine may populate the mt_count_preattribution field withcounts from a tbl_[PAGETYPE]_attribution_set_X_Y data structure. Valuesin the mt_count_preattribution data structure should exactly match thecounts in the mt_count_prestage column. The brain engine may populatemt_count_attributed with counts from fact_[PAGETYPE]_attribution tablesfor event MathTag records. The brain engine may use ‘null’ for creativeMathTag records. Values in mt_count_attributed may be compared to PC andPV numbers in the mm_reporting database's ad exchange data. Whencompared across key fields, the event MathTag counts could be greaterthan the exchange data. The brain engine may populatemt_count_directional with counts from fact_directional_imp_analysis forcreative MathTag records and fact_directional_site_analysis for eventMathTag records. Values in mt_count_directional may exactly match valuesin the mt_count_prestage and mt_count_preattribution columns.

Referring now to FIG. 3F, one embodiment of a method for attribution ofa conversion event to an impression via a demand side service isdepicted. In brief overview, a demand side service, executing on one ormore servers, may match conversion events that occurred within a periodof time of advertisements, to impressions corresponding to theadvertisements. The method includes identifying, by the demand sideservice, a plurality of event records for the conversion events matchedto the impressions (321). The demand side service matches an event of anevent record from the plurality of event records corresponding to anadvertiser and a user, to a plurality of impressions matched by thedemand side service for the advertiser and the user (323). The demandside service selects an impression from the plurality of impressionswith a time stamp less than a time stamp of a conversion event of theevent record (325). The demand side service stores an attribution of theselected impression with the conversion event of the event record (327).

In further details of (321), the demand side service identifies aplurality of event records for the conversion events matched to theimpressions. A demand side service is sometimes referred to as a demandside platform (DSP). In some embodiments, a DSP provide features andprocesses which constitute the demand side service. The demand sideservice may execute on one or more servers. For example, the demand sideservice may include one or more modules (e.g., attribution component,bidding engine, ad exchange interfaces, and brain engine) distributedacross one or more servers over a network. A demand side service mayidentify one or more conversion or user events. The demand side servicemay be notified of a user event by one or more entities, such aspublishers, ad exchanges, ad servers, advertisers, clients or impressionopportunity providers. For example, a user event, such as a completedsale of an advertised product, may be consummated at a client oradvertiser's website. The client or advertiser may notify the demandside service in response to the user event.

In some embodiments, each user event triggers a notification back to thedemand side service. The notification may be sent to the demand sideservice in real time, e.g., as each user event occurs. In certainembodiments, the notification may be sent in batch, e.g., as aconsolidated log of one or more events, which may be sent periodicallyor upon request by the demand side service. In some embodiments, oneparticular type of user event may be tracked, satisfied and/or reportedby a particular entity, while another entity may track, satisfy and/orreport another type of user event. For example and in one embodiment, aclient website may complete and report a sale while an ad server mayrespond to and report a user's request for more information. The demandside service may receive a logfile, update or other report of one ormore user events. The demand side service may provide one or moreinterfaces for receiving notifications from the one or more entities.The demand side service may use the one or more interfaces to process,normalize and/or consolidate notifications of various types of userevents from the one or more entities. The demand side service maydescribe and/or store each user or conversion event in a record. Thedemand side service may organize and/or store a plurality of records inany type or form of format or data structure, e.g., in a spreadsheetformat. In some embodiments, an events database stores and/or maintainsone or more records. The events database may reside in the demand sideservice or reside externally in communication with the demand sideservice.

In some embodiments, the demand side service matches conversion eventsto impressions. Although described generally and illustratively in termsof the demand side service, the demand side service may include anattribution component for performing some of the steps in an attributionprocess. The demand side service may match one or more impressions toconversion events that occurred within a period of time ofadvertisements corresponding to the one or more impressions. The periodof time may be predetermined by the demand side service, a user or anadministrator of the demand side service. The period of time may bedetermined, for example, to be a certain number of days, weeks, hours orminutes relative to the first appearance of the impression. In oneembodiment, the demand side service may determine the period of time asa predetermined number of days, for example, two days.

In some embodiments, the demand side service may identify and/or monitorevent records that correspond to one or more types of user actions(e.g., a click). The demand side service may identify and/or monitorevent records that correspond to a user click occurring within thedetermined period of time. The demand side service may identify eventrecords of events that occur within the determined time period from auser click or other user action. In certain embodiments, the demand sideservice identifies event records that correspond to a user view of theimpression or advertiser. The demand side service may identify eventrecords corresponding to a user view occurring within the determinedperiod of time. The demand side service may determine a user view as anyappearance of an impression to a user. In one embodiment, the demandside service determines that a user view occurred upon loading of theadvertisement. In another embodiment, the demand side service assumesthat a user view occurred if a user is potentially exposed to theimpression for at least a certain period of time. In still anotherembodiment, the demand side service assumes that a user view occurred ifthe user's cursor had moved over the advertisement. Tin certainembodiments, the demand side service may determine that a user viewoccurred regardless of whether the user actually viewed thecorresponding advertisement.

Referring to (323), the demand side service matches an event of an eventrecord from the plurality of event records corresponding to anadvertiser and a user, to a plurality of impressions matched by thedemand side service for the advertiser and the user. The demand sideservice may match a user event to one or more impressions identifiedwith an advertiser. The demand side service may identify the advertiserfrom a tag (e.g., a creative MathTag) of the impression, advertisementor creative. The demand side service may incorporate or associate thetag with each advertisement or creative sent to populate an impression.The tag may include an identifier of the advertisement. The tag mayfurther include an identifier of the user being presented with theimpression or advertisement. For example, the publisher of theimpression may update the received tag with user information, includinga user identifier (e.g., UUID). In another embodiment, the demand sideservice receives user information (e.g., from the correspondingpublisher or ad exchange) and updates the tag with a user identifierprior to sending to the publisher.

In some embodiments, the demand side service identifies a user event orconversion event with a tag (e.g., an event MathTag). The tag may beincorporated into the event record of the user event. The demand sideservice may identify a corresponding advertiser for the user event. Thedemand side service may match an impression with a user event responsiveto both identifying a common user, e.g., via the respective event andcreative tags. The demand side service may match an impression with auser event responsive to both identifying a common advertiser, e.g., viathe respective event and creative tags. The demand side service maymatch an event record having an advertiser identifier and a useridentifier matching the advertiser identifier and the user identifier ofan impression. The demand side service may match an event record with aplurality of impressions if the advertiser identifier and the useridentifier of the record and these impressions match.

In some embodiments, the demand side service matches the event of a postview conversion to a plurality of impressions. In some otherembodiments, the demand side service matches the event of a post clickconversion to the plurality of impressions. The demand side service mayuse any type or form of algorithm or method for the matching, includingthe use of regular expression matching, direct matching of identifiers,and keying into a hash record of the user events. In some embodiments,the demand side service only matches the event of a post view conversionto an impression. In certain embodiments, the demand side service onlymatches the event of a post click conversion to an impression.

In further details of (325), the demand side service selects animpression from the plurality of impressions with a time stamp less thana time stamp of a conversion event of the event record. The demand sideservice may attribute the conversion event to the selected impression.The demand side service may select an impression from one or moreimpressions matched to a user event from (323). The demand side servicemay select the impression if the impression's time stamp is less than atime stamp of a conversion event of the event record. In someembodiments, the demand side service may select more than oneimpressions, and attribute the selected impressions to the user event.In certain embodiments, the demand side service selects an impressionfrom the plurality of matched impressions with a time stamp closest tothe time stamp of the event record.

Referring to (327), the demand side service stores an attribution of theselected impression with the conversion event of the event record. Thedemand side service may calculate a time lag for attribution bysubtracting the time stamp of the impression from the event time stamp.The demand side service may calculate a time lag for attribution bysubtracting the time stamp of each matched impression from the eventtime stamp. The demand side service may determine that the impressionwith the shortest or smallest time lag caused or lead to the conversionevent. The demand side service may determine that multiple impressionswith the shortest or smallest time lag(s) caused or led to theconversion event.

The demand side service may determine, from an ad campaign correspondingto the attributed impression, an attribution window. In certainembodiments, the attribution window differs from (e.g., is smaller than)the period of time referenced in (321). In other embodiments, theattribution window and the period of time referenced in (321) are thesame. In some embodiments, the demand side service determines if thetime lag for attribution is within an attribution window for a campaignof the advertiser corresponding to the impression. Where multiple timelags for attribution are calculated, the demand side service maydetermine whether each time lag (or the longest time lag) forattribution is within the attribution window. The demand side servicemay determine that a conversion event is attributed to one or moreimpressions with a time lag within the attribution window.

The demand side service may store an attribution of the selectedimpression with the conversion event of the event record. The demandside service may store the attribution in the conversion event's eventrecord. In some embodiments, the demand side service may store theattribution of each conversion event in a fact table. The demand sideservice may use the attribution information to assess the effectivenessof an advertisement in a particular channel, segment, publisher,daypart, weekpart, user, etc. In some embodiments, the demand sideservice uses the attribution information to update one or more rules forbidding on impression opportunities. The demand side service may use theattribution information to update an ad campaign, and/or to design a newcampaign.

D. Use of Server Side Cookies for User Identification and User DataCollection

Fragments of data for a unique user may be gathered at different times,from different ad sites, and/or via different ad exchanges and sources.These data may be useful when combined for evaluating and/or executingad campaigns. A DSP may provide or use cookies or other tracking agentsto track user behavior and action across one or more ad exchanges. TheDSP may track the user in relation to one or more impressionopportunities provided across one or more ad exchanges. The DSP maygather information about user behavior and action from the cookies ortracking agents. Using this information, the DSP may generate a log ofactions by each unique user across all ad exchanges. The DSP may use theunique user information in a number of ways, such as attributing a useraction to an impression opportunity served via the DSP.

The DSP may provide and maintain a user database (hereafter sometimesreferred to as “UDB”) for storing user information, includinginformation obtained from cookies and other tracking agents. The DSPdata warehouse may incorporate the UDB in some embodiments. In otherembodiments, the DSP may provide separate storage elements for the UDB,such as using storage area networks (SAN) and any embodiment of thestorage elements 122, 128, 140 described above in connection with FIGS.1B and 1C. The UDB may be configured or structured for storing any typeor form of user data, such as user profiles and preferences, logs ofuser actions, geo information, as well as user information fromthird-party providers such as BlueKai. The UDB may stores any user data(including fourth-party data) under the DSP UUID. In some embodiments,the UDB stores and/or maintains User-ID Mapping information between eachexchange and the DSP.

In some embodiments, a creative pixel referred to as a MathTag Pixel isused to perform ID mapping between an ad exchange and a DSP. A biddermay insert a query string parameter into a creative MathTag that isembedded into a response to a requesting ad exchange:

-   -   mm_mop=base64(exchangeId:exchangeUserId)        If the ad exchange does not pass a user ID in the bid request,        the bidder may not insert a mm_map key into the pixel tag. The        user ID may be encoded, e.g., using Base-64 encoding. Upon        receiving the pixel request, the pixel server may look for the        mm_map_name-value pair from the request's query string. If the        mm_map_name-value pair is found, the value may be decoded, and        the Exchange-ID and Exchange-UserID values retrieved. The DSP        may check a cookie mapping to see if a user ID mapping between        the ad exchange (defined by the Exchange-ID) and the DSP is        already established. In one embodiment, a mapping cookie has the        following illustrative format, where timestamp is the value of        the time when the mapping was created:

  mm_mop=<exchange-id-1>:<timestamp-1>[|<exchange-  id-2>:<timestamp-2>[...]] If the Exchange-ID is not found in thecookie, the mapping is inserted into the UDB:  udb_prod.Mapping_E<Exchange-ID>_MM.insert(     { “_id”:<Exchange-UserID>, “mm” : <MM-UserID> } );

In some embodiments, the naming convention of mapping table (collection)is: “Mapping_E<Exchange-ID>MM”. For example and in one embodiment, ifthe ad exchange's ID is 2 in the DSP system, then the mapping collectionfor the exchange user-ID to DSP user-ID is “Mapping_E2_MM”. If theExchange-ID is not found in the cookie, “<Exchange-ID>:<current-time>”is added into the mapping cookie. In some embodiments, if theExchange-ID is found in the cookie, but the timestamp is very old (suchas over 30 days), the DSP may want to update or refresh the mapping:

udb_prod.Mapping_E<Exchange-ID>_MM.update( { “_id”: <Exchange-UserID> },{ $set: { { “mm” : <MM-UserID> } }, true );

The UDB may be designed and constructed based on various assumptionsand/or facts. For example and in one embodiment, user profile data maybe relatively static. Since user profile data may not be updatedfrequently, they may be highly cacheable. The brain engine may analyzeuser profile data to make better real-time decisions on optimizing thebidding strategy for a biddable impression. However, the brain enginemay optionally elect to ignore some or all user data in making decisionsdepending on the volume of processing and/or the time for making a bid.User traffic may show high level of repeatability. For example, a usermay generate multiple (sometimes many) ad requests within a certain(e.g., short) time frame. In some embodiments, user data may begenerated primarily from one bidding module and/or ad exchange due to amatching of various ad exchange and user characteristics. In someembodiments, the DSP may provide a user-aware load balancer that directsrequests from a user to a bidding module or ad exchange.

By way of illustration, the following describes one embodiment of amethod for collecting and/or processing user data. An event MathTag maybe used to assign user data into a user record in the UDB. The DSP'spixel server may add a user to a list of monitored users. For exampleand in one embodiment, an advertiser may insert or locate a MathTag(e.g., event MathTag) on the advertiser's Thank-you page (or other webpage). A user may make a purchase on advertiser's site traverse to theThank-you page of the advertiser site. The user's browser may send apixel request (e.g., MathTag message) to the pixel server (e.g., of theDSP). The pixel server may decide to add the user to a list, such as alist of users that purchased a certain item. The list-id may be 12345.The pixel server may send an update to the UDB including the updatedlist. The pixel server may send an update to the UDB responsive to theupdated list. The UDB may incorporate the list or any portion of thelist into the UDB database. The pixel server may send an identifier ofthe user, as referenced by the ad exchange (e.g., ECUID) in the adexchange's domain space, to the UDB. The UDB may process each useraccording to each specific case. For example, a user may not have beenpreviously identified in the UDB. The UDB may determine not to create anew record into the database if the user does not accept cookies thattrack the user.

By way of illustration, the following describes another embodiment of amethod for collecting and/or processing user data. The UDB may attemptto map the user, as identified by an ad exchange (e.g., ECUID), with theUUID of the DSP. The ad exchange may pass a biddable request to abidder. An ECUID may be included in the request, identifying a user. Thebidder may check the bidder's cache (either internal (in-memory) orexternal (mem-cached)) to see if mapping between the ECUID and an MMUIDexists. If so, the bidder may use this mapping. If otherwise, the biddermay query the UDB for user-ID mapping information, such as from a“UID_Mapping<ExchangeName>” collection data structure. In someembodiments, if the UDB does not respond within a predefined timewindow, the bidder may timeout. The bidder may continue to process therequest without a MMUID. If a mapping is found, the bidder may use themapping as well as store the mapping in cache. If mapping is not found,the bidder may store an indication in cache that mapping between ECUIDand MMUID does not exist (e.g., to prevent repeated lookup from UDB).

If a bidder decides to bid for an impression, the bidder may transmit apixel with the bid response (including a creative). The pixel maycommunicate with the pixel server. The bidder may include the user'sECUID in a URL of the pixel. The pixel may include a validationmechanism (e.g., CRC16 check-sum) to prevent the URL from being altered.In some embodiments, upon receiving a build-mapping pixel call, thepixel server may insert a (ECUID, MMUID) mapping into the“UID_Mapping<ExchangeName>” collection data structure. The UDB mayprocess each user according to each specific case. For example, the UDBmay determine not to create a new record into the database if the userdoes not accept cookies that track the user.

By way of illustration, the following describes still another embodimentof a method for collecting and/or processing user data. The UDB mayattempt to use user data that are in the DSP's namespace. An ad exchangemay pass a biddable request (including a ECUID) to a bidder. The biddermay successfully retrieve a UUID using ECUID, from either the bidder'scache or from the UDB. The bidder may check its cache (either internal(in-memory) or external (memcached)) for the user data via the MMUID. Ifuser data can be found from cache, the bidder will use the user data.Otherwise, the bidder may query the UDB for the user data, by using theMMUID. If user data can be found in UDB, the bidder may use the userdata. The bidder may cache any response from UBD. In some embodiments,if the UDB does not respond within a predefined time window, the biddermay timeout. The bidder may continue to process the request withoutusing user data.

By way of illustration, the following describes yet another embodimentof a method for collecting and/or processing user data. The UDB mayattempt to use fourth party data. The UDB may import or incorporatefourth party data into the UDB. This can occur, for example, via by abackend process (e.g., batch update) or by bidder initiation (e.g.,real-time update). In the case of a real-time update, the bidder mayrequest for user data via a background thread. If the bidder does notfind fourth party data in the user record received from UDB, the biddermay send a (real-time) query request to the fourth party provider,identifying the user using the UUID or an ID assigned by the provider.Responsive to receiving a response from the provider, the bidder maysave the fourth party data into the UDB. The bidder may save the fourthparty data into the UDB under the provider's namespace. In someembodiments, the bidder may use the fourth party data as follows. Iffourth party data is present in a user record (under each provider'snamespace), the bidder may use the user data in the bidder's bidselection process.

In some embodiments, a bidder may query the UDB in an asynchronousmanner. The bidder may do a very aggressive timeout on the queries itmakes. The UDB may be locates in one data-center only. Caching mayprevent excessive network latencies and timeouts. In some embodiments, arequest may be served without using user profile data. In certainembodiments, if a response from the UBD is received, the bidder may putthe user date from the response into its cache. In some embodiments, thebidder may assume that user profile data are quite static. In someembodiments, a user appearing via an ad exchange may continue to makehimself/herself available to the ad exchange for a certain time window.Therefore, although the bidder may have timed-out on the user's firstrequest, the bidder may likely have the user data available (via cache)by the 2nd or 3rd request.

In some embodiments, since user data are quite static, the DSP systemmay perform data replication, e.g., replicate the UDB at data centers toreduce network latency.

A Master-Slave system of UDB is one embodiment of such a setup. The DSPsystem may provide proper levels of memory for caching user data toimprove performance. For example, 1 GB memory for caching user data ofabout 1 million unique users should be large enough to provide a goodcache hit ratio. In some embodiments, a memcached instance locatedbetween the bidder and the UDB can supply a large cache. The memcachedmay reside in the same subnetwork that one or more bidders reside.

In some embodiments, the DSP system may pre-populate a Bidder's cache,e.g., to ensure that a bidder does not timeout and miss any impressionsfrom users that are in an important list (e.g., a very narrowly targetedremarketing campaign). A program can be configured to schedule andinitiate the pre-population. A bidder may be configured to cache a userrecord in for a longer time span (e.g., 24 hours).

In some embodiments, the UDB is designed and configured as a highperformance, document-oriented, schema-free distributed database. TheUDB may be designed and configured for storing high volume, low-valuebut high query performance data (e.g., cookie data). In someembodiments, UDB is implemented using MongoDB. For example and incertain embodiments, communication between DSP modules such as biddersand pixel server(s)) can be implemented using a MongoDB C++ driver.Query/insert may be implemented using JSON objects. The MongoDB C++driver can perform translation between c++(JSON) object and the BSON(binary-encoded serialization of JSON-like documents) data used inMongoDB.

By way of illustration, one embodiment of the data structures for an UDBis:

struct ListEntry { unsigned int _id : 20; // list-ID unsigned int _day :12; // day-stamp when user was added to the list }; struct ListData {char _provider[8]; // fixed size buffer! e.g., “mm”, “bk” (blue kai),etc vector<ListEntry> _lists; }; struct User { string _id; // MM's UUID,128-bit binary data int _ver; // version of the data fmt time_t _lmt; //last modification time. vector<ListData> _data; // list data };

BSON Data Structure in Mongo:

{ “_id”: String, // MM's UUID, 16-byte (128-bit), binary. “v”: int, //version # of the format “lmt”: int, // last modify time of this userrecord. 32-bit time_t value. “mm”: [int] // namespace of MM user data,an array of integer. // 4th-party data can be added under their ownnamespace. }

By way of illustration, one embodiment of a method of implementing andadministering a UDB using MonDB is shown below. An administrator accountmay be created for the UDB:

-   -   >use admin    -   >db.addUser(“mmadmin”, “M3d1@m@7hR0ckz!”)        Create udb_prod:    -   >use udb_prod;    -   >db.createCollection(‘Users’, {size: 2000000000, autoIndexId:        true});    -   >db.Users.getIndexes( ); //make sure index is created        Create regular user accounts for udb_prod:    -   >use udb_prod;    -   >db.addUser(“bidder”, “udBB1dD3rc00L”); //for bidder    -   >db.addUser(“mt2”, “udBmTtw0fly$”); //for pixel-server (aka MT2)        Create udb_test:    -   >use udb_test;    -   >db.createCollection(‘Users’);        Create a user account for setup replication on master and slave        DBs:    -   >use local    -   >db.addUser(‘repl’, ‘m3d1@m@7hr3pl’);        Create both udb_prod and udb_test into the slave.        Update the “udb_local” script to start mongo as a slave:    -   extra_opts=“--slave--source        ewr-udb-n1.mediamath.com:$bind_port--only udb_prod”        Mongo command line arguments for replication:    -   --master master mode    -   --slave slave mode    -   --source arg when slave: specify master as <server:port>    -   --only arg when slave: specify a single database to replicate    -   --pairwith arg address of server to pair with    -   --arbiter arg address of arbiter server    -   --autoresync automatically resync if slave data is stale    -   --oplogSize arg size limit (in MB) for op log    -   --opIdMem arg size limit (in bytes) for in memory storage of op        ids        Stop UDB from mongo shell:    -   $/opt/mongodb/bin/mongo--port 27172    -   >db.shutdownServer( )        Repair UDB (e.g., in the event of a crash or abruptive        termination of the mongod process): From mongo shell (to repair        a specific database—referenced by db):

  > db.repairDatabase( ); From command line (to repair all databases):  $ /opt/mongodb/bin/mongod --repair Report server status:  >db.serverStatus( )  {   “uptime” : 6239,   “globalLock” : {    “totalTime” : 6239264837,     “lockTime” : 11279716,     “ratio” :0.0018078597871193395   },   “mem” : {     “resident” : 917,    “virtual” : 65295,     “mapped” : 34832   },   “connections” : {    “current” : 2999,     “available” : 17001   },   “ok” : 1 }

Referring now to FIG. 4A, an embodiment of a demand side platform (DSP)for using server-side cookies to identify and integrate user data acrossexchanges for use by the DSP in bidding and operation of the platform.In brief overview, the DSP of FIG. 4A includes a pixel server, a bidderand interfaces in communication with a plurality of exchanges, such asExchange A thru Exchange C (e.g., Exh A-Exh C). Each of the exchangesmay use their own user identifiers that are valid only in the domainspace of the exchange. Each of the exchanges may provide user data tothe DSP, such as user data 420A from exchange A, user data 420B fromexchange B and user data 420C from exchange C. Each exchange may providecookies or cookies information to identify the user and/or user data ofthe exchange, such as cookie A 405A for exchange A, cookie B 405B forexchange B and cookie C 405C for exchange C. The DSP may create andestablish a user and user identifier 409 for a user valid in the DSPdomain space. The DSP may create a DSP cookie 411 to identify and trackthis user. A map manager 430 of the DSP may establish a cookie mapping412 to map the DSP cookie and user to the user id and cookies of each ofthe exchanges. The DSP may store user data from each of the exchanges toa user database 420 that can be queried by the DSP using the cookiemapping 412. The DSP may establish a map key 411 as a reference to theuser's cookie mapping maintained by the DSP, such as via Pixel Server402. The bidder may place this key in a pixel in a bidding communicationwith an exchange. The communication may include the user id and exchangeid for the exchange.

The DSP may include a pixel server 402 for management or processing ofpixels. The pixel server may include any type and form of executableinstructions that execute on a device. The pixel server may operatewithin the DSP or external to the DSP. The pixel server may generate orprovides any type and form of pixel. The pixel server may recognize orprocess any type and form of pixel. The pixel server may receive pixelcalls from activated or triggered pixels. The pixel server may compriselogic, operations or functions to process the pixel calls and store,track and manage information tracked via the processed pixel. In someembodiments, the pixel server may establish, track and managing thecookie mappings described herein. In some embodiments, the pixel servermay include the map manager. In some embodiments, the pixel server maystore user data or data provided via a pixel to the user database 420.

Each of the exchanges may establish, maintain, process and track a userin the exchange via a user identifier. A user identifier for an exchangeis unique to that exchange. For example, exchange A may have useridentifier A for a user while exchange B and C have user identifiers Band C for the same user. The user identifier for an exchange may beaccepted, authenticated or is otherwise valid in the domain of theexchange issuing or providing the user identifier. For example, onlyservers and services of exchange A will accept, authenticate, recognizeor find valid user identifier A for the user for exchange A.

Each of the exchanges may establish and provide a cookie 405 foridentifying, tracking and managing user identifiers and user data forthe exchange. Each of the exchanges may provide a cookie unique to thatexchange or containing information unique to that exchange. For example,exchange A may issue cookie A 405A for a user while exchanges B and Cissue cookies B 405B and 405C for the same user. The cookies, generallyreferred to as cookie 405, may include exchange identifier, useridentifier and user data 420A-C.

User data 420A-420C from an exchange may comprise any informationreceived, tracked or provided to, from or via the exchange. User datamay include information identifying characteristics of the user, such asage, gender, geographical data, categories of interest, user actions,user purchases, etc. The user data may include any data identified viathe request and response parameters described in connection with FIGS.2H and 21 above. Each of the exchanges may provide different user datafor the same user than other exchanges.

The DSP may collect, store, track and manage the plurality of user data420A-420C for a user received from the plurality of exchanges to a userdatabase 420. As such, in some embodiments, the user database 420represents a set of data for the user from different exchanges. In someaspects, the user database provides an aggregated view of the user fromthe collection of user data across the plurality of exchanges. The userdatabase 420 may comprise a collection of data representing or provide auser profile. The user database 420 may be used by the bidder in makingbidding rules, determining bids or otherwise for executing a campaign.Upon facing or receiving an impression opportunity for a user from anexchange, the bidder may use the collective or aggregative informationof the user from user database to determine for what, if any, campaignof the DSP to make a bid on the impression opportunity.

The cross-exchange user database 420 allows the bidder to use data fromone exchange to make bids on another exchange. For example, although asecond exchange does not support or provide a certain piece or type ofuser data, the bidder may be influenced in the bidder's bidding with thesecond exchange by the certain piece or type of user data provided bythe first exchange for the user. The cross-exchange user database 420allows the bidder to use data from a plurality of exchanges to make bidson any one exchange. The bidder may obtain user data from the userdatabase received for the user from a plurality of exchanges. Any datain the user database may used by the bidder to make bidding decisions onany one of the exchanges.

A map manager 430 may create, establish and maintain a DSP cookie andcookie mapping for each user. The map manager may comprise any type andform of executable instructions executing or executable on a device. Themap manager may be part of any component of the DSP. The map manager maybe part of the pixel server or otherwise executed by the pixel server.

The map manager 430 may map the plurality of cookies from an exchangefor a particular user to a DSP user identifier 409, referred tosometimes as MMUID, for the user. The DSP cookie 409 may be referred toas the mapping cookie which includes the cookie mapping. The cookiemapping 412 may comprise any data arranged in any manner that identifiesan exchange id, a cookie id for the exchange represented by the exchangeid and a timestamp of when the cookie was received. The cookie mappingmay include a user identifier for the particular user on the exchange.For a user, the cookie mapping may identify the plurality of exchangesfor which the DSP has established a mapping for the user. As such, thecookie mapping 412 may map an exchange id, exchange user id, cookie andtimestamp for a plurality of exchanges identifying the user. In someembodiments, the cookie mapping or portions thereof are stored in theuser database 420.

The DSP cookie 410 may map the DSP user 409 to the plurality of exchangeuser ids and cookies for each of the exchanges applicable to the user.The DSP cookie map the DSP user to any third party data separate from anexchange and stored in the user database. The map manager may provide aunique key referred to as map key 411 as a reference or handle to aninstance of the DSP cookie and cookie mapping for a particular user. Themap manager may use the timestamp value to identify when a mapping maybe stale, old or expired.

When an exchange passes a biddable request to the bidder, the exchangeincludes a an exchange user id in the request. The bidder checks to seeif the mapping between the exchange user id and DSP user id exists. Ifthe bidder does not find the mapping, the bidder includes a pixel intothe bid response (e.g., creative) when bidding on the impression. Thepixel is to the pixel server and the exchange user id is included in thepixel url. The pixel is a build-mapping pixel call to the pixels server.Upon receiving the build-mapping pixel call, the pixel server insertsthe exchange user id and DSP user id combination into the cookiemapping. If the bidder finds the mapping between the exchange user idand DSP user id, the bidder queries the user database using the DSP userid. If the user database does not return a result in a predefined timewindow, the bidder will timeout and continue processing the requestwithout using user data. If the user database returns a result in thepredefined time window, the user uses the user data in bidding. If thebidder queries the user database for fourth party (4p) data (data passedfrom a third-party to other companies (fourth-parties) and does not findsuch data, the bidder may send a query request to the 4P provider byuser id (DSP user id or provider's user id). After receiving a responsefrom the 4P provider, the data is stored into the user database underthe provider's namespace. If the bidder find 4P data in the userdatabase, the bidder will such data in the bidder's bid selectionprocess.

Referring now to FIG. 4B, embodiments of steps of a method for usingserver-side cookies in DSP operations is depicted. In brief overview, atstep 450, the DSP establishes a cookie mapping for a DSP user. At step455, the DSP inserts a build-mapping pixel into bid for impression toexchange. At step 460, the pixel server received the build-mapping pixelcall from the activated pixel. At step 465, the pixel server storesmapping to the cookie mapping. At step 460, the DSP stores user datafrom the exchange to the user database. At step 475, the bidder receivesbiddable request from exchange. At step 480, the bidder uses cookiemapping to identify DSP user and corresponding user data. At step 485,the bidder queries the user database to use user data for bid selectionprocess.

In further details, at step 450, the DSP, such as via bidder, pixelserver or any other component, may establish a DSP cookie for a DSPuser. The DSP may identify a user and establish a DSP user identifierunique to the user within the DSP or otherwise valid in the namespace ofthe DSP. The DSP may store the DSP cookie in the user database. The DSPmay establish a user namespace within the user database. Under the usernamespace, user data from an exchange, from third party data providersand from fourth party data providers may be stored in associated withthe user. The DSP cookie may be provided to the user via the exchange ifthe user accepts such cookies. The DSP may not establish the DSP user iduntil the DSP cookie is accepted by the user or the user' device.

In some embodiments, a user is added to the DSP responsive to the pixelserver. For example, an advertiser places a DSP pixel or tag on a webpage related to a conversion event or a predetermined user activity. Theuser visits the advertiser's web page or otherwise takes thepredetermined user activity. The pixel or tag is activated and makes apixel call or sends a pixel request to the pixel server. Response to thepixel call or request, the pixel server decides to add the user to theuser list of the DSP. The pixel server may send an update to the userdatabase to add the user by DSP user id to the user database. In someembodiments, the pixel server may send a request to the user database toadd a new user. Response to the request, the user database creates a DSPuser id for the user and may pass the DSP user id back to the pixelserver. Responsive to a new user, the DSP such as via user database, mayestablish a DSP and a cookie mapping in which maps can added.

At step 455, the bidder may place a map-building pixel into a bidrequest for an impression to an exchange. The bidder may received abiddable request from an exchange. The request may include a useridentifier for the exchange. The bidder may checks a cache to see ifmapping between exchange user id and DSP user id exists. If yes, thenthe bidder uses the DSP user id. If not, the bidder queries the userdatabase for the mapping. If the user database does not return a resultin a predefined time window, the bidder will timeout and continueprocessing without the DSP user id. If a mapping id returned within thepredetermined time window, bidder uses the mapping. The bidder may storethe mapping to the cache. If the mapping is not found in the userdatabase, the bidder places a mark or indicator in the cache that themapping does not exist.

If the bidder devices to bid for an impression, the bidder places orincludes a pixel in the bid response, such as part of or included in thead or creative. The bidder may piggyback a pixel or pixel tag into thebid response. The pixel url may encode the exchange user id. The biddermay insert a query string parameter into the DSP tag that is embeddedinto the response to the requesting exchange. The data for the querystring parameter may be encoded using base-64 encoding. The data mayinclude encoded exchange identifier and corresponding exchange useridentifier. If the exchange does not pass an exchange user identifierinto a biddable request, the bidder does not insert the map key into thepixel tag. Otherwise, the bidder includes the map key with the response,such as part of the query string parameters of the request. When theadvertised or creative is delivered via the impression, the pixel may beactivated or triggered resulting in a call to the pixel server.

At step 460, the pixel server may receive a call from the DSP pixel ortag. The pixel server may receive the pixel request comprising the pixelurl and/or the query string parameters. The pixel server may look forthe map key in the request's query string, such as via a name-value pairdesignated or intended to carry the map key. If the map key is found inthe request, the pixel server may decode the encoded data values fromthe pixel request. The pixel server may use base 64 decoding to decodethe base 64 encoded data. The pixel server checks the cookie mapping tosee if the mapping for the exchange to the DSP has already beenestablished (e.g., is the exchange id found in the user's cookiemapping). The mapping cookie corresponding to the user may include alist of exchange id and timestamps of when the mapping was created. Ifthe mapping exists, then the pixel server checks the timestamp todetermine if the mapping is stale, obsolete or expired in accordancewith any policies of the DSP or corresponding exchange. If so, the pixelserver may update or re-establish the mapping between the exchange andDSP and use an updated timestamp. Otherwise, the pixel server maymaintain the cookie mapping as is.

At step 465, if the exchange id is not found in the cookie mapping, thepixel server may create a mapping entry in the cookie mapping to map theexchange to the DSP for the user. The pixel server may send a request tothe user database to add the mapping to the user cookie. The request mayinclude the exchange id and current time. The request may provide theDSP user id or MMUID of the corresponding user. The request may identifythe exchange user id corresponding to the user for the exchangeidentified by the exchange id. In some embodiments, the pixel server mayupdate the cookie mapping in cache. In some embodiments, the pixelserver may send database inserts/updates to the user database to updateor create the cookie mapping.

At step 470, any user data from an exchange, third party and/or from afourth party may be stored in the user database and associated with theDSP user id and corresponding cookie mapping. The user data may bereceived by the DSP via any DSP cookie or exchange cookie, such as vianame-value data in such cookies. The user data may be received by theDSP via any biddable request from an exchange. The user data may bereceived by DSP or exchange pixel calls to the pixel server. The pixelcalls may pass or identify any user data. The user data may be receivedby an online or offline attribution process, such as those describedherein. The user data may be queried and received via any databaseexternal to the DSP, such as by a query via an API to an exchange,third-party or fourth-party service or data provider. The query may be areal-time query.

At step 475, the bidder may receive a biddable request from any one ofthe exchanges. The bidder may receive the biddable request from theexchange responsive to a request from the DSP or bidder for suchbiddable requests. The bidder may receive a biddable request for a usercurrently identified by the DSP via a DSP user id. The bidder mayreceive a biddable request for which there is an existing andcorresponding cookie mapping. The bidder may receive a biddable requestfor an exchange having an exchange id mapped to the DSP via a cookiemapping. The bidder may receive a request including any of thoseembodiments described in connection with FIGS. 2H and 2I.

At step 480, upon receipt of the biddable request, the bidder may usethe cookie mapping to find the DSP user id corresponding to this userfrom this exchange request. The bidder may perform a lookup via thecookie mapping. The cookie mapping may be stored in the cache and/oruser database. The bidder may query for the cookie mapping responsive todetermining the bidder may or will bid on the biddable request. Thebidder may retrieve the DSP user id by exchange user id from a cookiemapping either in the cache or the user database. With an exchange idand exchange user id, the bidder may identify the DSP user id for theuser via the cookie mapping, The bidder may query the cookie mapping orquery the user database for the DSP user id with a defined timeoutperiod. If the DSP user id is not found or determined within the definedtimeout period, the bidder may not use the user data in the biddingselection process.

At step 485, with the DSP user id, the bidder may query the cache todetermine if the cache hold users data corresponding to the DSP user id.If the cache does have the corresponding user data, the bidder may usethe cached user data. If the cache does not have the user data, thebidder may query the user database using the DSP user id to obtaincorresponding user data. The bidder may query for certain portions ofuser data by parameter or attribute name. For example, the bidder mayquery the user profile for certain user attributes that are useful,applicable or desirable for bidding on the exchange in which the bidderwill bid.

E. Integration and Anonymization of Supplier Data

A DSP can support a number of process flows for evaluating and/orexecuting an ad campaign. In some embodiments, some of the process flowsintegrate third party provider information (e.g., insights andanalytics) for segment targeting. A target segment may feature a set ofcharacteristics. These characteristics may include user characteristics,such as user profile, preferences, behavior, and history. Thecharacteristics may include site characteristics, such as ad network,publisher, content, etc. The characteristics may include impressioncharacteristics, such as channel, dayparts, weekparts, REM orprospecting classifications, and ad size information. As discussed,third party providers can include suppliers such as BlueKai, Exelate,etc.

Third party providers (hereafter sometimes generally referred to as“suppliers” or “partner”) may limit access to the data that they provide(e.g., segment data) via any means. For example, suppliers can implementauthenticated access, limited-access windows, data encryption,dynamically-updated mapping dictionaries to match third-party data withdata derived from ad server and other sources, etc. In certainembodiments, certain aspects of segment information may beclosely-guarded and may be provided in a fragmented but coordinated way.Some suppliers may identify one or more segment candidates (e.g.,impression opportunities) from a plurality of segments to a DSP fortracking without identifying the corresponding segment of eachcandidate. The suppliers may provide identifiers and/or segment mappingdictionaries to match tracked data with supplier data. Some or all ofthese measures may be referred to as anonymizing supplier data. In someembodiments, some suppliers may require anonymization to share data witha DSP or other partner.

In some embodiments, anonymization involves merging closely-guardedsupplier data with DSP-collected data, to generate segment-specificprofiles or reports, but not disclosing the supplier data separately.Anonymization may include disclosing segments covered by a plurality ofimpressions, but not segments covered by individual impressions.Anonymization may include disclosing segment data generated for aplurality of impressions, but not segment data specific to anyindividual impression. In certain embodiments, anonymization may includeidentifying segments covered by a plurality of impressions and users,but not segments associated with an individual user. In anotherembodiment, anonymization may include reporting segment profiles orreports for a plurality of users but not disclosing segment datapertaining to any particular user. In yet another embodiments,anonymization may include providing a DSP with anonymous segmentidentifiers which are not descriptive of the segments themselves.Anonymization may sometimes refer to the use of one or more mappingdictionaries to associate data collected by the DSP with segment datafrom a supplier. In some embodiments, anonymization is a means for asupplier to protect its detailed delineation or definition of aparticular segment. In some of these embodiments, ad campaign resultsfrom the various available segments are, however, available forcomparison to identify effective segments to pursue.

Referring to FIG. 5A, one embodiment of a system for evaluating andexecuting an ad campaign is depicted. In brief summary, the system showsthree stages, two of these stages involving integration of supplierdata. In a first stage, a DSP may create a cookie pool for running anunrestricted, untargeted campaign. In some embodiments, the cookie poolis segment-agnostic. No information specific to any segments arecollected in these embodiments. The untargeted campaign may be used todetermine metrics and measures for use as a baseline against targetedsegments. The untargeted campaign may be used to assess certain campaignsettings or parameters. The untargeted campaign may be used to assessthe supply of available or projected impression opportunities.

One embodiment of anonymizing supplier data is shown within stage 2,sometimes referred to as a segment backtesting process. In someembodiments, a segment backtesting process incorporates data collectedvia DSP MathTags, pixels and/or cookies, as well as supplier data. TheDSP system integrates data collected via these sources to provide a morethorough and in-depth analysis of the market dynamics related to anyparticular impression opportunity.

In some embodiments, a supplier may provide pixels or cookies for use bythe DSP. The DSP may associate or incorporate these pixels or cookieswith MathTags to collect data from pools of impression opportunities.These pixels or cookies may associate data collected from a site via theDSP with a segment identifier. In some embodiments, the supplier mayidentify a pixel or cookie as belonging to a particular segment. Thissegment information may not be directly disclosed to or available to theDSP. In some embodiments, the segment identifier is a random integer(RI) uniquely assigned to a specific segment and is referred to as a DSPRI. The suppliers may provide third-party segment-specific data. Thesuppliers may identify the segment-specific data with a supplier segmentidentifier. In some embodiments, the supplier segment identifier is arandom integer uniquely assigned to a specific segment, and is referredto as a third-party RI. The suppliers may generate and/or providemapping dictionaries. A mapping dictionary may associate or match a DSPRI with a third-party RI corresponding to the same segment. A DSP mayassociate, consolidate or process the collected data with supplier datausing a mapping dictionary to produce segment-specific insights andanalytics.

By separating or profiling a converter pool into segments (e.g., usingthe dictionary), a DSP can determine performing segments for targetingin an ad campaign. In some embodiments, a DSP may execute a campaignusing a stage 3 process, also known as segment targeting process. In thesegment targeting process, the supplier may provide the DSP withsegment-specific pixels or cookies. The supplier may identify impressionopportunities from the targeted segment to the DSP for bidding.

Referring now to FIG. 5B, an embodiment of a segment backtesting processis depicted. A user action may activate a pixel associated with animpression. In some embodiments, the pixel is a supplier-provided tag.The pixel may communicate with a pixel server via a URL. The pixelserver may be provided by the supplier. In some embodiments, the pixelis attached to or included in a DSP MathTag. A generic tag or pixel nottargeting any segments may be used across one or more campaigns. Thegeneric tag or pixel may provide a means to join or associate acorresponding impression with segment-related data from the supplier. Insome embodiments, when an impression is served, loaded or displayed, thepixel communicates with the pixel server. The DSP may generate orprovide a placement identifier for the impression or advertisement. Thepixel may identify the impression or advertisement to the pixel serverusing a placement identifier of the impression or advertisement. Uponactivation, the tag or pixel may request segment-related data from thesupplier for the corresponding impression by providing site and/orplacement information of the impression. The supplier may determine thatthe corresponding impression is associated with one or more segments.

In some embodiments, the DSP identifies each user, e.g., via a UUID. Thepixel may identify the user to the pixel server, for example, uponactivation of the pixel. The supplier or pixel server may determine ifdata pertaining to the user is available. The supplier or pixel servermay determine if the user has been previously identified by thesupplier, e.g., in a cookie pool maintained by the supplier. Thesupplier or pixel server may determine if segment data corresponding tothe user is available. The supplier may provide data from the one ormore segments to the DSP in response to the request. Activation of asupplier tag or pixel may be represented in one embodiment as a URLconnection to:

http://adadvisor.net/adscores/g.pixel?sid=<site value>&_ri=<mm placementid>&_cx=<mm context flag>

where:

<site value> is a static value assigned by the supplier to identify eachcustomer.

<mm placement id> is a dynamic value populated by the DSP per placement.This is a random, unique number used to join segment data with the DSPplacement data.

<mm context flag> is a static value assigned by the DSP to identify thecontext of the supplier tag.

-   -   001 may indicate a supplier tag in media    -   002 may indicate a supplier tag on a page

The supplier may identify a segment based on information collected(e.g., about the advertiser site and/or user) by the pixel. The suppliermay provide a dictionary to map a corresponding DSP tag, cookie orMathTag to the pixel. The supplier may provide a dictionary to map acorresponding DSP tag, cookie or MathTag to the segment of the pixel. Insome embodiments, the supplier may provide segment information, such asthe types of segments to the DSP. The supplier may provide the availabletypes of segments to the DSP in the form of a dictionary of segmentidentifiers. In some embodiments, the DSP may determine that animpression and/or user corresponds to a particular segment identified bya DSP segment identifier. The DSP may identify the segment of animpression to the supplier, e.g., via the supplier pixel. The DSP mayidentify the segment to the supplier in order to procure datacorresponding to the identified segment.

In some embodiments, the dictionary may associate data collected by theMathTag, pixel or cookie with the identified segment. The pixel serverand/or the supplier may communicate with the ad server for additionalinformation. The supplier may identify the segment based on theadditional information. In some embodiments, the pixel server and/or thesupplier may associate the additional information with the identifiedsegment. The supplier may provide the collected information and/oradditional information of the identified segment to the DSP. Thesupplier can provide a look-up file or mapping dictionary (e.g., in .txtor .csv format) that maps the DSP segment identifier with a segment name(e.g., “Leisure Travel”) provided by the supplier.

In some embodiments, the DSP collects segment data from supplier. Insome embodiments, activation of a creative MathTag, attached to the sameadvertisement as the pixel, also activates the pixel. The DSP maycollect segment data from the supplier on a per user basis. The suppliermay match one or more segments to the impression. The supplier mayidentify the one or more matched segments based on one or more of: anidentifier of the user, information about the impression, informationabout the advertisement site; information about the context (e.g.,webpage or media) of the impression, and identification of one or moresegments by the DSP. The DSP can receive segment data in real-time,responsive to pixel activation (or firing), and/or via offline datasharing processes. In one embodiment, the latter may include maintaininga log of tag activation and transferring the log to the DSP in anoffline process. In some embodiments, the DSP receives real-time matchedsegments responsive to an activated tag. The tag activation may berepresented in one embodiment as a URL connection to:

-   -   http://data.mathtag.com/dp/dps/TARG/<mm context flag>/imp?    -   px=%{score}!%{zip}!%{indiv1.age}!%{indiv1.        gender}!%{indiv1.timestamp}    -   !%{indiv2.age}!%{indiv2.gender}!%{indiv2.timestamp}&ri=<mm        placement id>    -   where    -   <mm context flag> may be a static value assigned by the DSP to        identify the context of the supplier tag. This value may be sent        on the supplier request tag.    -   %{score}!%{indiv1.age}!% . . . may be a bang delimited (!) list        of supplier values.    -   <mm placement id> may be a dynamic value populated by the DSP        per placement. This value may be sent on the supplier request        tag.

A supplier can perform an infrastructure test, e.g., check that thesupplier's setup can properly operate with the DSP in any of the stepsdescribed.

The DSP may generate a model based on the consolidated segment data. TheDSP may generate insights specific to segments. The DSP may determinethe performance of one or more identified segments. In some embodiments,the DSP collects segment data on a per user basis. Accordingly, the DSPcan generate a model and/or insights for a specific user. Responsive tothe model and/or insights, the DSP may target one or more segments tobid on.

Referring now to FIG. 5C in conjunction with FIG. 5A, an embodiment of asegment targeting process is depicted. A DSP may use or provide MathTagsor pixels, or specify cookies provided by an ad exchange, to target aspecific segment. In some embodiments, one MathTag is assigned persegment per ad exchange. In some embodiments, these MathTags are REMpixels. In certain embodiments, when an impression is served, the DSPgenerates a request to a supplier to provide segment data correspondingto the REM pixel. The DSP or the supplier may provide a lookup ordictionary between a REM pixel or REM pixel URL and a segment. Oneembodiment of a lookup data structure or table is shown below:

Segment Remarketing Pixel 001 http://action.mathtag.com/cnt?id=ti_001002 http://action.mathtag.com/cnt?id=ti_002 003http://action.mathtag.com/cnt?id=ti_003 004http://action.mathtag.com/cnt?id=ti_004 005http://action.mathtag.com/cnt?id=ti_005 006http://action.mathtag.com/cnt?id=ti_006 007http://action.mathtag.com/cnt?id=ti_007 008http://action.mathtag.com/cnt?id=ti_008 009http://action.mathtag.com/cnt?id=ti_009 010http://action.mathtag.com/cnt?id=ti_010

By way of illustration, stages 2 and 3 of the process is described belowwith respect to a user cookie, although any user tracking agent, tag orpixel is similarly applicable. A user may trigger a MathTag at a site.In some embodiments, a MathTag corresponding to an impression istriggered when the impression is served. A user cookie, in someembodiments, may be set with a REM pixel (e.g., segment-specific) whenthe MathTag is triggered. Responsive to triggering the MathTag (e.g., instage 2), the MathTag may request the supplier to identify one or moresegments associated with the impression, site and/or user. Based on theidentification, the DSP may identify, provide or generate a REM pixel toattach to the user cookie. The DSP and/or supplier may use a lookuptable that maps each segment to an appropriate REM pixel. The DSP and/orsupplier may use a lookup table that maps each segment to a URL. In someembodiments, the supplier makes a container call to the DSP to select orgenerate the REM pixel. The DSP may select or generate a REM pixel thattriggers a remarketing action using a URL mapped to the identifiedsegment. In some embodiments, the DSP provides the REM pixel to thesupplier. The DSP or supplier may attach the REM pixel to the user'scookie. The DSP may ensure that the corresponding ad exchange recognizesor tracks the REM pixel.

In certain embodiments, the ad exchange may identify the user navigatingto various sites or webpages, e.g., in stage 3. The ad exchange maytrigger the REM pixel when it detects the user cookie, for example, atanother site monitored by the ad exchange. The site may be associatedwith the particular segment identified earlier. The REM pixel maytrigger a remarketing action with the DSP via a URL configured in theREM pixel. The ad exchange may offer an impression opportunity at thesite. In some embodiments, the DSP determines, via the triggering REMpixel, to bid on the impression opportunity. The DSP determines, via thetriggering REM pixel, to identify or provide a target advertisement inconnection with the bid. The DSP may send a bid to the ad exchange forthe impression opportunity. If the ad exchange accepts the bid, the adexchange conveys the ad from the DSP to the user site.

In some embodiments, the DSP runs a multi-exchange campaign targetingone or more segments. The DSP may determine that certain segments areeffective and target these segments at higher volume.

One embodiment of variable declarations describing a REM pixel includesthe following:

var mm_context_flag=%{context flag};

var mm_ri2=%{mm placement id};

var targ_score=%{score};

var targ_zip=%{zip};

var targ_indiv1_age=%{indiv1.age};

var targ_indiv1_gender=%{indiv1.gender};

var targ_indiv1_timestamp=%{indiv1.timestamp};

var targ_indiv2_age=%{indiv2.age};

var targ_indiv2_gender=%{indiv2.gender};

var targ_indiv2_timestamp=%{indiv2.timestamp};

Referring now to FIG. 5D, one embodiment of a method for maintaininganonymity of segment data from a third party provider while performingsegment targeting via a demand side platform is depicted. In briefoverview, a demand side platform executing on one or more serversreceives one or more segment identifiers for segment data of a datasupplier (501). Each of the one or more segment identifiers includes arandom integer uniquely assigned to a specific segment of the segmentdata. The demand side platform provides a pixel for segmented targetingof an impression opportunity for an advertisement exchange (503). Thedemand side platform receives a tracking agent from the data supplier toassociate data collected via the demand side platform with the segmentidentifier (505). A bidder of the demand side platform executes aplacement of an advertisement matched to an impression opportunity, theplacement comprising the tracking agent and the pixel (507). The demandside platform receives segment data from the data supplier based onexecution of the tracking agent (509). The segment data corresponds tothe segment identifier for the placement.

In further details of (501), a demand side platform executing on one ormore servers receives one or more segment identifiers for segment dataof a data supplier. In some embodiments, the DSP receives a segmentidentifier from a plurality of data suppliers. Each data supplier mayprovide third-party data specific to one or more segments. In someembodiments, the data supplier may alternatively or additionally providenon-segment-specific data. In some embodiments, the DSP collects segmentdata from each data supplier. The DSP may collect segment data from thesupplier on a per user basis. The DSP can receive segment data inreal-time, responsive to pixel or MathTag activation (or firing), and/orvia offline data sharing processes. In one embodiment, the latter mayinclude maintaining a log of tag activation and transferring the log tothe DSP in an offline process. In some embodiments, the DSP receivesmatched segments in real-time responsive to an activated pixel or tag(e.g., MathTag). A pixel or tag may be activated when an impression isserved. A pixel or tag may be activated responsive to a user action.

In some embodiments, the data supplier identifies segment-specific datawith a supplier-specific segment identifier. Each of the one or moresegment identifiers may include a random integer uniquely assigned to aspecific segment of the segment data. In various embodiments, a segmentidentifier may include any type or form of identifiers includingalphanumeric names, strings or values. Each segment may be assigned aunique segment identifier. In some embodiments, one or more datasuppliers may use the same segment identifier for data associated with aspecific segment.

The DSP may identify data that the DSP collected (in association with animpression) with a DSP-specific segment identifier, e.g., to be matchedagainst a segment of the supplier. The DSP may collect data using apixel or creative MathTag attached to an impression. For example, acreative MathTags can be used to log geographic and other attributes forevery exposure to a user. Event MathTags can be used to log attributesof a user performing an action on a client's advertising site. The DSPsystem may be configured to dynamically receive numeric and alphanumericvalues from event MathTags and/or creative MathTags. In one embodiment,examples of dynamically-passed values includes Order Numbers, Cart Sizeand Revenue. In some embodiments, such as with anonymization, theDSP-specific segment identifier is different from a segment identifierprovided by a data supplier. In yet other embodiments, the DSP-specificsegment identifier is the same as a corresponding supplier-specificsegment identifier. A data supplier may generate a segment mappingdictionary based on the segments from which the data supplier suppliesdata. The data supplier may generate the segment mapping dictionarybased in part from segment-related information (i.e., DSP segmentidentifiers) provided by the DSP. The DSP may receive a segment mappingdictionary from each data supplier.

In some embodiments, the dictionary includes a mapping of a DSP-specificsegment identifier to a supplier-specific segment identifier. In oneembodiment, the dictionary includes a mapping of a DSP-specific and/orsupplier-specific segment identifiers to the corresponding segments. Thesegment mapping dictionary may include a mapping of the one or moresegment identifiers to a corresponding segment of the segment data. TheDSP may associate DSP-collected data with supplier-provided data usingthe mapping dictionary. The DSP may produce segment-specific insightsand analytics from the association. The supplier can provide thedictionary in the form of a look-up file or mapping dictionary (e.g., in.txt or .csv format) that maps a DSP segment identifier with a segmentname (e.g., “Leisure Travel”) provided by the data supplier. In someembodiments, the dictionary maps each segment identifier to a URLprovided by the DSP.

Referring to (503), the demand side platform provides a pixel forsegmented targeting of an impression opportunity for an advertisementexchange. The pixel may be any form or type of cookie or tag, or includefeatures of cookies or tags. In certain embodiments, the pixel is aMathTag. The DSP may attach one or more pixels for attaching orincorporating into an impression. The DSP may use the pixel to collectdata from an impression, site and/or user. A pixel may communicate witha pixel server via a URL for example.

The DSP may serve, to a publisher or site, an impression embedded with asupplier-provided pixel, tag or cookie for collecting data. The pixelmay execute when an impression is loaded, e.g., to a web page. In someembodiments, activation of a pixel includes a URL connection to a pixelserver. The pixel may send collected data to the DSP via a destinationidentified by the URL. The DSP and/or supplier may identify one or moresegments for association with the user, impression and/or site based oninformation collected by the pixel. The DSP and/or supplier may identifyone or more segments using the dictionary described above.

In further details of (505), the demand side platform receives atracking agent from the data supplier to associate data collected viathe demand side platform with the segment identifier. The tracking agentmay be any type or form of tag, cookie or pixel. The DSP may receivefrom the data supplier the tracking agent responsive to serving animpression. In another embodiment, the DSP receives from the datasupplier the tracking agent before placing a bid on an impressionopportunity. In some embodiments, the DSP attaches or incorporates thesupplier pixel to the tracking agent. In certain embodiments, thetracking agent provides features different from that of a pixel orcookie. In some embodiments, the tracking agent is associated with asegment identifier.

In some embodiments, the data supplier provides as the tracking agent asegment-generic pixel for attaching or incorporating into an impression.The data supplier or DSP may use a generic tag or pixel that is nottargeting any segments, across one or more impressions and/or campaigns.

The supplier may use the pixel for collecting and/or matchinginformation related to the impression to one or more segments. In someembodiments, the supplier may identify each pixel as belonging to aparticular segment. The DSP may associate, attach or incorporate thepixel to the advertisement or impression. In certain embodiments, theDSP may associate, attach or incorporate the pixel to a creative MathTagprovided by the DSP

Referring to (507), a bidder of the demand side platform executes aplacement of an advertisement matched to an impression opportunity. Apublisher may offer an impression opportunity for bid, e.g., as a useris navigating to a webpage. The ad exchange may accept a bid from theDSP for the impression opportunity. The DSP may convey an advertisementto populate the impression opportunity. This is sometimes referred to asplacing an ad. The placement of the advertisement may include thetracking agent and the pixel. The bidder may attach the tracking agentand/or the supplier pixel with the advertisement. In some embodiments,the DSP generates a placement identifier for the placement. The DSP maygenerate the placement identifier as a random and/or unique number. Theplacement identifier may be used to associate segment data (e.g.,provided by the supplier) with the placement and/or impression.

In further details of (509), the demand side platform receives segmentdata from the data supplier based on execution of the tracking agent.The segment data may correspond to the segment identifier for theplacement. The data supplier may determine what data to send to the DSPupon execution of the tracking agent. The data supplier may determinewhich segment(s) the corresponding user, impression and/or site isassociated with. The data supplier may determine the segments based oninformation collected by the tracking agent regarding the user,impression, site, etc. Responsive to the determination, the datasupplier may send or provide corresponding segment data to the DSP.

In some embodiments, the DSP receives segment data on a per user basis.The DSP may receive segment data on a real-time or substantially realtime basis via an interface to the data supplier. In some embodiments,the DSP receives segment data on a real-time basis or substantially realtime basis responsive to activation of the tracking agent. The trackingagent may, for example, be activated by a user action such as a click ormouse over. The tracking agent may, in some embodiments, be activatedresponsive to the display of the advertisement. In some embodiments, theDSP receives segment data on an offline basis via import of a file of apredetermined type, e.g., a logfile or spreadsheet. The DSP may make arequest for the file import on a periodic basis, for example.

The DSP may generate a model based on the consolidated segment data. TheDSP may generate insights specific to segments. The DSP may determinethe performance of one or more identified segments across one or more adcampaigns. In some embodiments, the DSP runs a multi-exchange campaignacross one or more segments. The DSP may determine that certain segmentsare effective and may target these segments at a higher volume.

Referring now to FIG. 5E, an embodiment of steps of a method for segmenttargeting by the DSP is depicted. In brief overview, at step 551, theDSP receives segment data of a data supplier such as via a segmentmapping dictionary, corresponding to a user. The DSP may create a modelbased on the segment data to determine one or more segments to target.At step 552, the DSP provides one tag or pixel per segment per exchange,each referred to as a remarketing pixel. At step 553, a lookup isestablished between the remarketing pixels and a plurality of segments.Each of the segments may be mapped to a unique remarketing pixel. Atstep 554, the DSP triggers a request for a remarketing pixel to attachto a cookie of the user. At step 555, the data supplier receives therequest and selects a remarketing pixel based on the lookup. At step556, the DSP bids on an impression opportunity when the user isidentified by an ad exchange based on the remarketing pixel.

At step 551, the DSP may receive segment data of a data supplier. Thedata supplier may determine what segment data to send to the DSP using asegment mapping dictionary from the data supplier. The dictionary maycomprise any embodiments of the dictionary described above in connectionwith FIGS. 5A-5D. The received segment data may correspond to a singleuser. The dictionary may be updated on a periodic basis by the datasupplier. Each of the one or more segment identifiers may comprise arandom integer uniquely assigned to a specific segment of the segmentdata. A segment mapping dictionary may include a mapping of the one ormore segment identifiers to a corresponding segment of the segment data.The DSP may receive or obtain the segment data online or in real-timevia an API call, pixel call or tag request. The data supplier may pushor trigger an event to the DSP for updates or changes to the segmentdata. The DSP may receive or obtain the segment data via an upload,download or another file transfer method. The DSP may create a modelbased on the segment data to determine one or more segments to target.The DSP may determine, based on the model, that one or more segments areexpected to be more successful than the others, for example.

At step 552, the DSP provides one tag or pixel per segment per exchange,each referred to as a remarketing pixel. The DSP may provide aremarketing pixel for each targeted segment. The DSP may provide theremarketing pixel on a per exchange basis for each segment. For example,exchange 1 may have a first remarketing pixel for segment id 1, a secondremarketing pixel for segment id 2 and a third remarketing pixel forsegment id 3, while exchange 2 has its own set of remarketing pixels foreach of the same segment ids. Each remarketing pixel may identify orinclude a call to a URL provided by the DSP. The URL may include one ormore query parameters. A call to the URL may initiate one or moreactions by the DSP. In one embodiment, a call to the URL may initiate abid for an available impression opportunity.

At step 553, a lookup is established between the remarketing pixels anda plurality of segments. Each of the segments may be mapped to aremarketing pixel. The lookup may comprise any form or data structure,such as a table, file or other object. In some embodiments, the DSPestablishes the lookup. The DSP may send the lookup to the data supplieror advertiser, which may further update the lookup. In some embodiments,the data supplier or advertiser establishes the lookup. The datasupplier or advertiser may send the lookup to the DSP. In someembodiments, the DSP maintains the lookup. In some embodiments, the datasupplier or advertise maintains the lookup.

In some embodiment, the lookup maps each segment to information forconfiguring a remarketing pixel. The information may include asegment-specific URL for including in each remarketing pixel. The datasupplier may use the lookup to create a remarketing pixel specific toeach segment. In some embodiments, each URL may be linked to particularinstructions or executing modules in the DSP.

At step 554, the DSP triggers a request for a remarketing pixel toattach to a user's cookie. The DSP may request the supplier to determinewhether to attach a remarketing pixel to a user's cookie. The DSP maytrigger the request responsive to an available impression opportunity.The DSP may trigger the request responsive to serving an impression. TheDSP may trigger the request responsive to an activation of a MathTag ofthe DSP. The DSP may request the supplier to determine whether aparticular user belongs to a target segment. The DSP may request thesupplier to determine whether a particular user belongs to a targetsegment responsive to serving an impression to the user. The DSP maymake the one or more remarketing pixels available to the supplier toattach to the user's cookie.

The DSP may determine if the user has one or more cookies for hostingthe remarketing pixel. In some embodiments, the DSP may create a cookiefor the user to host a remarketing pixel. In one embodiment, the DSP mayrequest the data supplier or ad exchange to create a cookie for the userto host a remarketing pixel. In some embodiments, a particular cookie iscreated, or a new cookie created, specifically for hosting theremarketing pixel.

At step 555, the data supplier receives the request. The data suppliermay select a remarketing pixel based on the lookup. When the datasupplier or advertiser receives a pixel request, such as from deliveringan impression to a user, the data supplier or advertiser may perform alookup of the remarketing pixel based on the applicable segment. Thedata supplier may collect data related to the impression, user and/orthe corresponding site. The data supplier may determine that theimpression and/or user corresponds to one or more segments. The datasupplier may determine that the one or more segments includes a segmenttargeted by the DSP. The data supplier may perform a lookup of theremarketing pixel corresponding to the targeted segment. The datasupplier may set the user's cookie(s) with the corresponding remarketingpixel. The data supplier may insert or provide information correspondingto the remarketing pixel in the user's cookies. In some embodiments, theuser's cookie may identify segment identifiers and/or segment data.

The DSP may ensure that the ad exchange can detect or recognize theremarketing pixel in the user's cookie. The DSP may provide the adexchange with a list of the remarketing pixel to monitor. In someembodiments, the DSP may inform the ad exchange to track one or moreactive remarketing pixels. In some embodiments, no other ad exchange maydetect or recognize the remarketing pixel. In other embodiments, someother exchanges may detect or recognize the remarketing pixel. Forexample, the DSP may convey the remarketing pixel to a plurality of adexchanges. When an impression opportunity is available, one theplurality of ad exchanges may communicate to the DSP that the impressionopportunity is directed to a user identified by a remarketing pixel. Insome embodiments, one the plurality of ad exchanges may inform the DSPwhen the remarketing pixel is detected.

At step 556, the DSP bids on an impression opportunity when the user isidentified by an ad exchange based on the remarketing pixel. The usermay navigate to another site or webpage. In some embodiments, the usermay disappear from the domains monitored by the ad exchange, e.g., bymoving into a domain not monitored by the exchange, or by signing outfrom the web. The ad exchange may monitor one or more sites for thepresence of the user via the user's cookie(s). The ad exchange maymonitor one or more sites for the presence of the remarketing pixel bymonitoring all user cookies identified at the one or more sites.

Responsive to an identification of the remarketing pixel, the adexchange may communicate this to the DSP. In some embodiments, the adexchange may activate the remarketing pixel. In other embodiments, theDSP may activate the remarketing pixel. The DSP may verify that theremarketing pixel belongs to an active campaign before activating theremarketing pixel. The DSP may verify that the remarketing pixelcorresponds to a targeted segment before activating the remarketingpixel. In certain embodiments, upon identification and/or verificationof the remarketing pixel, the DSP may trigger one or more operations.The one or more operations may be triggered according to a URL includedin the remarketing pixel, for example. Accessing the URL may execute oneor more instructions at the DSP.

The DSP may, for example, initiate a bidding process based on theremarketing pixel. The DSP may determine that an impression opportunityis available (e.g., to the user), corresponding to the detection of theremarketing pixel. The DSP may determine that the impression opportunitywarrants a higher bid due to its association with a targeted segment. Insome embodiments, the remarketing pixel may trigger the data supplier toprovide additional information (e.g., segment data) to the DSP fordetermining how and whether to bid. The remarketing pixel may identifyto the DSP, e.g., via the URL, information for influencing the biddingprocess. In some embodiments, the remarketing pixel may collect dataassociated with the user (e.g., user preference, history, transactions),and may provide this data to the DSP. Responsive to the remarketingpixel, the DSP may determine a price to bid for the impressionopportunity. The DSP may send one or more bids for the impressionopportunity responsive to the remarketing pixel.

F. Use of Packed Names in Third-Party Data Interfaces

Each ad exchanges may provide one or more interfaces for specifying,defining, displaying, retrieving or reporting data related to impressionopportunities, user data, third-party-provided information, ad campaignsand/or ad transactions. The interfaces provided by one ad exchange mayhave fields, parameters or dimensions (hereafter sometimes generallyreferred to as “dimensions”) that may be different from interfaces ofanother ad exchange. Some ad exchange interfaces may support customdimensions. A DSP, or an advertiser using such an interface may define,specify or configure the interface to provide and/or receive additionaldimensions.

A custom dimension may be useful to complement the standard dimensionsprovided by an interface. As described above in connection with FIGS.2A-2E, it is useful to normalize the data received across one or more adexchanges. Data sent to a plurality of ad exchanges may also benormalized or standardized across the plurality of ad exchanges, e.g.,to include a standard set of parameters and/or instructions. Customdimensions can be defined and added to default or standard interfaces ofspecific ad exchanges so that the interfaces across ad exchanges canappear or operate more uniformly from a DSP or advertiser's point ofview. In some embodiments, reporting tools, provided by an ad exchangeor a third-party provider (e.g., Exelate) have interfaces that arenon-uniform relative to another provider. As a way for clients orpartners of such reporting tools to customize data retrieval and/orreporting, these providers may offer custom dimensions.

In some embodiments, a custom dimension may be added to currentlyavailable dimensions. In certain embodiments, currently availabledimensions may be customized. To normalize interfaces and/or data acrossa plurality of ad exchanges and/or reporting tools (hereafter sometimesgenerally referred to as “third-party interfaces”), a DSP provider mayconfigure and/or add custom dimensions to certain interfaces. Each DSPinterface (e.g., bidding modules) may include additional translationaland/or mapping elements to operate with the custom dimensions.

In some embodiments, managing a large number of custom dimensions may berelatively complex and/or inefficient. Some third-party interfaces maysupport a limited number of custom dimensions. Some third-partyinterfaces may charge more or demand more profit-sharing in providingadditional custom dimensions. In certain embodiments, third-partyinterfaces may be prone to over-loading and/or interface problems (e.g.,missing/incomplete/corrupted data, data misdirection, and increasedlatency in reporting, data transfer or data retrieval) as the number ofcustom dimensions increases. In some embodiments, it is important,necessary, beneficial or crucial to perform transactions withthird-party interfaces efficiently, e.g., real-time bidding ofimpression opportunities.

A method for using packed names in each custom dimension is disclosedherein. One or more dimensions may be packed or incorporated into asingle dimension. One or more dimension names may be incorporated into aname for a custom dimension. One or more parameters, fields, values,configuration, settings or commands may be incorporated into a customdimension for reporting, retrieval, execution and/or transmission. Forexample and in one embodiment, a custom dimension incorporating acollection of data can be pulled for reporting any subset of theincorporated data. Each third-party interface may be configured orprogrammed to parse and/or separate a plurality of dimensions embeddedinto a custom dimension. In some embodiments, a hierarchy of dimensionsmay be incorporated into a single dimension. The method of packing aplurality of dimensions into one dimension may be referred to as “packednames”

In some embodiments, packed names can be applied across a plurality ofthird-party interfaces. In some of these embodiments, shared keys and/oridentifiers may be used to access similar dimensions across interfaces.A plurality of dimensions may be incorporated, concatenated,consolidated, or grouped into one dimension using any type or form ofencoding and/or text-string manipulation techniques. In someembodiments, each custom dimension may include human-readable textualstrings of any type or form (e.g., alpha-numeric and/or specialcharacters). Some dimensions (e.g., of media management user interfaces)may be configured for human input, modification and/or comprehension.

In some embodiments, a plurality of dimensions may be concatenatedtogether into a single string using any type or form of string delimiteror dimension separator (hereafter sometimes generally referred to as“delimiter”). A delimiter can be any one or more characters of any type(e.g., alpha-numeric and/or special characters). A delimiter may beselected or configured such that the delimiter can be clearlydistinguished from dimensions. A delimiter may be selected or configuredsuch that the delimiter is not likely to be confused with any portion ofa dimension during parsing or processing. Some third-part interfaces(e.g., ad exchanges) may share a delimiter or use different delimiters.

A concatenated string of dimensions separated by delimiters may bereferred to as a packed name. A DSP may configure or require a packedname to be machine or database parse-able. For example and in oneembodiments, when a packed name reported as one attribute (e.g., onedimension) is loaded into the DSP interface, the packed name can beparsed to show multiple dimensions in an internal reporting system ofthe DSP. In some embodiments, a plurality of campaigns can beimplemented by sharing limited interface resources (e.g., dimensions).Additional and/or customized hierarchies and organization of campaignscan be configured for on an existing interface. For example and in oneembodiment, dimensions of three campaigns can be concatenated andexecuted concurrently as a single object (e.g., campaign). Therefore, asingle “campaign” external object may represent multiple real lifecampaigns.

The DSP and third-party interfaces may be configured with a plurality oftypes of packed names. Types of packed names or dimensions may include,but is not limited to: line item or placement, creative and pixel. Aline item packed name may include any type or form of informationrelated to an ad campaign, flight, or ad bidding configuration. Forexample and in one embodiment, a line item packed name includes thefollowing string:

Advertiser,!Agent,!Campaign,!CreationGroup,!PubRestr,!Bid_Descrp,!Bid_Strategy,!Bid_Dim,!Targ1,!Targ2,!PH1,!PH2,!PriceMeth

A creative packed name may include any type or form of informationrelated to a creative, including concept, design, use and deployment.For example and in one embodiment, a creative packed name includes thefollowing string:

Exchange,!advertiser,!campaign,!concept1,!concept2,!concept3,!productsym,!responsecateg,!filetype,!dimension,!creativetargeting1,!creativetargeting2,!ch1,!ch2,!3P_join!

A pixel packed name may include any type or form of information relatedto a pixel, including pixel design, use and deployment. For example andin one embodiment, a pixel packed name includes the following string:

advertiser,!sequence,!pagetype,!pixeltype,!timelag-window,!subtractionID,!friendlypage name,!security,!tag-type,!agency_pixel_name_in_atlasorDFA

In some embodiments, packed names are configured for at least someportion of third-party interfaces in a uniform or substantially uniformway. For example and in one embodiment, custom interfaces using standardpacked names may be applied across third-party interfaces so that DSPinterfaces can be configured and operate uniformly (e.g., instead ofusing custom bidding modules). In some embodiments, a single DSPinterface can communicate with a plurality of third-party interfacesusing standard packed names. Packed name conventions can be used orextended to other interfaces. For example and in one embodiment, when aDSP receives reports from a third-party ad server, the e-mail subjectline may follow packed name conventions in order to match the DSP'sreporting interface.

By way of illustration and not intended to be limiting in any way, Table13 shows one embodiment of attributes and other details related to anumber of packed names. As an example, two ad exchanges or interfaces(RMX and ADX) are referenced. The RMX interface uses “,!” as adelimiter. The ADX interface uses “:!” as a delimiter. Among theattributes, Field name may refer to each custom dimension. The Friendlyname attribute may refer to a shortened name, identifier or alias of thepacked name and/or the field name. The Max size attribute may refer tothe size of the packed name or dimension and may be in any unit (e.g.,bytes, characters). The Packed Name ID attributed may refer to the typeof packed name. The Position may refer to a position of the packed namerelative to another packed name. For example, the packed names may beprocessed in sequence according to the position indicator. The packingConvention attribute may refer to how dimensions are arranged in thepacked name. The Inputs attribute may refer to source(s) that providesthe dimension information.

Packed Friendly Name Notes for standard usage, abbreviations, Field NameName Max Size ID Position Packing Convention Inputs formats, etc For RMXSLI/ADX Placement Packed Names mm_advsym Advertiser 4 Line item 1Advertiser, !Agent, !Campaign, !Creation Pre-defined - Unique 4character Group, !PubRestr, !Bid_Descrp, e.g. TRST, symbol forAdvertiser - !Bid_Strategy, !Bid_Dim, !Targ1, VIRM, COFX created inPacked !Targ2, !PH1, !PH2, !Price Name Symbol Meth Registration formmm_agentsym Agent 3 Line item 2 Advertiser, !Agent, !Campaign, !CreationPre-defined - Unique 3 character Group, !PubRestr, !Bid_Descrp, e.g.DIG, symbol for Agency !Bid_Strategy, !Bid_Dim, !Targ1, AVE, COPrepresenting Advertiser - !Targ2, !PH1, !PH2, !Price created in PackedMeth Name Symbol Registration form mm_campaign Campaign 12 Line item 3Advertiser, !Agent, !Campaign, !Creation User defined - Identifiescampaign Group, !PubRestr, !Bid_Descrp, e.g. March-April, !Bid_Strategy,!Bid_Dim, !Targ1, Flight 1 !Targ2, !PH1, !PH2, !Price Pop-Pix Methmm_grouping CreationGroup 2 Line item 4 Advertiser, !Agent, !Campaign,!Creation User defined - Instance of line item, Group, !PubRestr,!Bid_Descrp, 1 for initial increments by one for !Bid_Strategy,!Bid_Dim, !Targ1, line item, each iteration of line !Targ2, !PH1, !PH2,!Price add 1 every item - ‘1’ for initial LI, ‘2’ Meth time a iftargeting is changed, change is ‘3’ if FC is then made changed, etcmm_pubrestr Publisher 12 Line item 5 Advertiser, !Agent, !Campaign,!Creation Pre-defined - Global (no restr), SBP Restriction Group,!PubRestr, !Bid_Descrp, e.g. Global, (RMX Sandbox Pub), !Bid_Strategy,!Bid_Dim, !Targ1, SBP, ex (exclude) in !Targ2, !PH1, !PH2, !Priceex[BlgPubName (include). Generally Meth (s)]+, only name big pubs,in[BigPubName but add a ‘+’ to indicate (s)]+ other, smaller pubs. E.G.‘exAdtegrity+’ Think about introducing symbols for pubs mm_biddescrp Bid32 Line item 6 Advertiser, !Agent, !Campaign, !Creation User defined -Describes status of line Description Group, !PubRestr, !Bid_Descrp, e.g.item - ‘QA’, ‘Launch’, !Bid_Strategy, !Bid_Dim, !Targ1, LaunchofCPC,‘Discovery’ - if !Targ2, !PH1, !PH2, !Price EBM introducing a changeMeth Discovery describe e.g. ‘LaunchofCPAon3-15’ or ‘Daypart 4-15’mm_bidstrat Bid 3 Line item 7 Advertiser, !Agent, !Campaign, !CreationPre-defined - ‘EBM’ for Exchange Bid Strategy Group, !PubRestr,!Bid_Descrp, EBM, REM, Management, ‘REM’ for !Bid_Strategy, !Bid_Dim,!Targ1, CTX Re-Marketing, ‘CTX’ for !Targ2, !PH1, !PH2, !PriceContextual Meth mm_biddim Bid 9 Line item 8 Advertiser, !Agent,!Campaign, !Creation Pred-defined - One RMX SLI applies Dimension Group,!PubRestr, !Bid_Descrp, All, to ‘All’ sizes - One ADX !Bid_Strategy,!Bid_Dim, !Targ1, 120 × 600, placement needs to be !Targ2, !PH1, !PH2,!Price 160 × 600, created per size Meth 300 × 250, 468 × 60, 728 × 90mm_targ1 Target 1 12 Line item 9 Advertiser, !Agent, !Campaign,!Creation User defined - Describes targeting rule Group, !PubRestr,!Bid_Descrp, e.g. fc = 4, e.g. ‘NYC-only’, ‘fc = 4’ !Bid_Strategy,!Bid_Dim, !Targ1, NYC-only (freq cap of 4 × 24) !Targ2, !PH1, !PH2,!Price Meth mm_targ2 Target 2 12 Line item 10 Advertiser, !Agent,!Campaign, !Creation User defined - Describes add'l Group, !PubRestr,!Bid_Descrp, e.g. 2-7 am targeting rule !Bid_Strategy, !Bid_Dim, !Targ1,!Targ2, !PH1, !PH2, !Price Meth mm_targroi Target ROI 32 Line item 11Advertiser, !Agent, !Campaign, !Creation Pre-defined - Describes targetGroup, !PubRestr, !Bid_Descrp, as input in metrics for bid, as!Bid_Strategy, !Bid_Dim, !Targ1, ADX/RMX - defined in ADX/RMX - !Targ2,!PH1, !PH2, !Price e.g. gCTR e.g. CPC target in RMX Meth .2, gCPC .5,requires goal input for gCPA 10 CPC (gCPC) and CTR (gCTR), or gCPA.mm_priceval Price/Bid 32 Line item 12 Advertiser, !Agent, !Campaign,!Creation Pre-defined - Bid amount for line item - Amount Group,!PubRestr, !Bid_Descrp, as input in e.g. ‘4’ for a $4 dCPM!Bid_Strategy, !Bid_Dim, !Targ1, ADX/RMX bid in RMX, ‘2’ for a !Targ2,!PH1, !PH2, !Price max CPM bid in ADX Meth mm_pricemeth Pricing 4 Lineitem 13 Advertiser, !Agent, !Campaign, !Creation Pre-defined - Describesthe Pricing Methodology Group, !PubRestr, !Bid_Descrp, RMX: CPA,Metholodogy set in !Bid_Strategy, !Bid_Dim, !Targ1, CPC, CPM, RMX or ADX(bCPM = !Targ2, !PH1, !PH2, !Price dCPM|ADX: budget goal via CPM MethbCPM, bids. aCPM = tries to aCPM, reach CPA goal with cCPM, CPM bid,using CPA iCPM, target and budget. mCPM cCPM = tries to reach CPC goalwith CPM bid, using CPC target and budget. iCPM = tries for impressiongoal with CPM, using bid and budget) For Creative Packed Names mm_exchExchange 2 Creative 1 Exchange, !advertiser, !campaign, Pre-defined -Defines which Name !concept1, !concept2, !concept3, ‘A’ for ADX,exchange is being used - !productsym, !responsecateg, !file ‘R’ for RMX‘A’ for ADX, ‘R’ for type, !dimension, !creativetargeting1, RMX!creativetargeting2, !ch1, !ch2, !3P_join mm_advsym_c advertiser 4Creative 2 Exchange, !advertiser, !campaign, Pre-defined - Unique 4character Name !concept1, !concept2, !concept3, e.g. TRST, symbol forAdvertiser - !productsym, !responsecateg, !file VIRM, COFX same as LineItem. type, !dimension, !creativetargeting1, !creativetargeting2, !ch1,!ch2, !3P_join mm_campaign_c campaign 12 Creative 3 Exchange,!advertiser, !campaign, User defined - Describes campaign - Name!concept1, !concept2, !concept3, e.g. March-April, e.g. ‘March-April’-!productsym, !responsecateg, !file Flight 1 same as for line item type,!dimension, !creativetargeting1, Pop-Pix !creativetargeting2, !ch1,!ch2, !3P_join mm_concpt1 Creative 12 Creative 4 Exchange, !advertiser,!campaign, User defined - Describes key concept concept Name !concept1,!concept2, !concept3, e.g. Golf element defined by label 1 !productsym,!responsecateg, !file MM, e.g. the color ‘blue’ type, !dimension,!creativetargeting1, used prominently !creativetargeting2, !ch1, !ch2,!3P_join mm_concpt2 Creative 12 Creative 5 Exchange, !advertiser,!campaign, User defined - Describes key concept concept Name !concept1,!concept2, !concept3, e.g. element defined by label 2 !productsym,!responsecateg, !file Capture MM, e.g. the color ‘blue’ type,!dimension, !creativetargeting1, used prominently !creativetargeting2,!ch1, !ch2, !3P_join mm_concpt3 Creative 12 Creative 6 Exchange,!advertiser, !campaign, User defined - Describes key concept conceptName !concept1, !concept2, !concept3, e.g. $650 element defined by label3 !productsym, !responsecateg, !file pkdg MM, e.g. the color ‘blue’type, !dimension, !creativetargeting1, used prominently!creativetargeting2, !ch1, !ch2, !3P_join mm_prodsym Product 6 Creative7 Exchange, !advertiser, !campaign, Pre-defined - Product symbol forSymbol Name !concept1, !concept2, !concept3, e.g. product being marketed!productsym, !responsecateg, !file RESORT, type, !dimension,!creativetargeting1, PUBENT !creativetargeting2, !ch1, !ch2, !3P_joinmm_resp Response 2 Creative 8 Exchange, !advertiser, !campaign,Pre-defined - ‘BD’ for brand, ‘BR’ for Category Name !concept1,!concept2, !concept3, BD, BR, BL branded response, ‘BL’ !productsym,!responsecateg, !file for blend type, !dimension, !creativetargeting1,!creativetargeting2, !ch1, !ch2, !3P_join mm_filetype filetype 3Creative 9 Exchange, !advertiser, !campaign, Pre-defined - Creative filetype Name !concept1, !concept2, !concept3, SWF, IMG !productsym,!responsecateg, !file type, !dimension, !creativetargeting1,!creativetargeting2, !ch1, !ch2, !3P_join mm_dimension dimension 9Creative 10 Exchange, !advertiser, !campaign, Pre-defined - Specifies W× H - Name !concept1, !concept2, !concept3, 120 × 600, ‘120 × 600’,!productsym, !responsecateg, !file 160 × 600, ‘160 × 600’, ‘300 × 250’,type, !dimension, !creativetargeting1, 300 × 250, ‘468 × 60’, ‘728 × 90’!creativetargeting2, !ch1, !ch2, 468 × 60, !3P_join 728 × 90 mm_crtag1creativetargeting1 18 Creative 11 Exchange, !advertiser, !campaign,User-defined - Describes targeting set Name !concept1, !concept2,!concept3, e.g. at creative level !productsym, !responsecateg, !file‘Mozilla’ type, !dimension, !creativetargeting1, !creativetargeting2,!ch1, !ch2, !3P_join mm_crtag2 creativetargeting2 18 Creative 12Exchange, !advertiser, !campaign, User-defined - Describes targeting setName !concept1, !concept2, !concept3, e.g. ‘CA- at creative level!productsym, !responsecateg, !file only’ type, !dimension,!creativetargeting1, !creativetargeting2, !ch1, !ch2, !3P_join mm_ch1Creative 32 Creative 13 Exchange, !advertiser, !campaign, TBDPlaceholder for Placeholder 1 Name !concept1, !concept2, !concept3,additional fields !productsym, !responsecateg, !file type, !dimension,!creativetargeting1, !creativetargeting2, !ch1, !ch2, !3P_join mm_ch2Creative 32 Creative 14 Exchange, !advertiser, !campaign, TBDPlaceholder for Placeholder 1 Name !concept1, !concept2, !concept3,additional fields !productsym, !responsecateg, !file type, !dimension,!creativetargeting1, !creativetargeting2, !ch1, !ch2, !3P_join mm_3pjoinagency_creative_name_in_atlasorDFA 64 Creative 15 Exchange, !advertiser,!campaign, Pre-defined - Creative name from Name !concept1, !concept2,!concept3, code DFA or Atlas - match !productsym, !responsecateg, !filerepresenting table with codes type, !dimension, !creativetargeting1,name in 3rd created for creative !creativetargeting2, !ch1, !ch2, partysystem names or ids, code !3P_join inserted here For ADX/RMX PixelPacked Names (In some embodiments, 50 character limit. e.g., due to RMXconstraint) mmx_advsym Advertiser 4 Pixels 1 advertiser, !sequence,!pagetype, Pre-defined - Unique 4 character !pixeltype, !timelag- e.g.TRST, symbol for Advertiser window, !subtractionID, !friendly VIRM, COFXpage name, !security, !tag- type, !agency_pixel_name_in_atlasorDFAmmx_pixseq sequence 4 Pixels 2 advertiser, !sequence, !pagetype, Userdefined - Pixel order allows for !pixeltype, !timelag- e.g. 1A, 1B, easysorting by window, !subtractionID, !friendly 2A, 3A importance - 1A, 1B,page name, !security, !tag- 1C, 1D.A, 1D.B type,!agency_pixel_name_in_atlasorDFA (several funnel pages, differentlanding page outcomes) mmx_pixpgetyp pagetype 3 Pixels 3 advertiser,!sequence, !pagetype, Pre-defined - Funnel (FUN), Landing !pixeltype,!timelag- MRT, MRO, Page (LPG), window, !subtractionID, !friendly MRD,FUN, Remarketing Direct page name, !security, !tag- LPG, RED, RED),Remarketing type, !agency_pixel_name_in_atlasorDFA REI, REP Indirect(REM), Merit (MRT), REP mmx_pixtype pixeltype 3 Pixels 4 advertiser,!sequence, !pagetype, Pre-defined - ‘SEG’ - RMX !pixeltype, !timelag-RMX: TRK, remarketing pixel. window, !subtractionID, !friendly SEG,?CRE? ‘TRK’ - RMX page name, !security, !tag- Merit only: conversionpixel. think type, !agency_pixel_name_in_atlasorDFA PVO, PCO, about TRKonly = PV PCS, PVS, setting or changing to PCP|ADX: PVT ADXmmx_pixwindow timelag- 4 Pixels 5 advertiser, !sequence, !pagetype,Pre-defined - ‘unl’ for unlimited, or window !pixeltype, !timelag- unlor Xd define actual number of window, !subtractionID, !friendly (30 d)or Xh days/hours, etc page name, !security, !tag- (36 h) type,!agency_pixel_name_in_atlasorDFA mmx_pixsub subtraction 2 Pixels 6advertiser, !sequence, !pagetype, Pre-defined - 4 digit subtraction IDfor ID !pixeltype, !timelag- 4 digits subtracting PC counts window,!subtractionID, !friendly from PV pixels in RMX, page name, !security,!tag- unique by ?campaign? type, !agency_pixel_name_in_atlasorDFAmmx_pixshrtnme short page 18 Pixels 7 advertiser, !sequence, !pagetype,Pre-defined - Allows for easy name !pixeltype, !timelag- TY, HP, TP,understanding of what window, !subtractionID, !friendly BP (brand pagethe pixel lives on - page name, !security, !tag- page), LGI should beshort as type, !agency_pixel_name_in_atlasorDFA (login), LGO possiblewhile (logout) remaining intuitable mmx_pixsecrty security 2 Pixels 8advertiser, !sequence, !pagetype, Pre-defined - Secure or Non-secure!pixeltype, !timelag- S, N window, !subtractionID, !friendly page name,!security, !tag- type, !agency_pixel_name_in_atlasorDFA mmx_pixtagtypetag-type 2 Pixels 9 advertiser, !sequence, !pagetype, Pre-defined -Javascript or Image !pixeltype, !timelag- J, I window, !subtractionID,!friendly page name, !security, !tag- type,!agency_pixel_name_in_atlasorDFA mmx_pix3Pnmeagency_pixel_name_in_atlasorDFA 64 Pixels 10 advertiser, !sequence,!pagetype, Pre-defined - Pixel name from DFA !pixeltype, !timelag- codeor Atlas - match table window, !subtractionID, !friendly representingwith codes created for page name, !security, !tag- name in 3rd pixelnames or ids, type, !agency_pixel_name_in_atlasorDFA party system codeinserted here Packed Names for Reporting 3P Reports mm_3padserve 13PAdServer:!3Padvertiser:!3Pcampaign: !3Ptagid:!3Ptagname 3P Reportsmm_3padv 2 3PAdServer:!3Padvertiser:!3Pcampaign: !3Ptagid:!3Ptagname 3PReports mm_3pcmpgn 3 3PAdServer:!3Padvertiser:!3Pcampaign:!3Ptagid:!3Ptagname 3P Reports mm_3ptagid 43PAdServer:!3Padvertiser:!3Pcampaign: !3Ptagid:!3Ptagname 3P Reportsmm_3ptagname 5 3PAdServer:!3Padvertiser:!3Pcampaign: !3Ptagid:!3Ptagname

It should be understood that the systems described above may providemultiple ones of any or each of those components and these componentsmay be provided on either a standalone machine or, in some embodiments,on multiple machines in a distributed system. In addition, the systemsand methods described above may be provided as one or morecomputer-readable programs or executable instructions embodied on or inone or more articles of manufacture. The article of manufacture may be afloppy disk, a hard disk, a CD-ROM, a flash memory card, a PROM, a RAM,a ROM, or a magnetic tape. In general, the computer-readable programsmay be implemented in any programming language, such as LISP, PERL, C,C++, C#, PROLOG, or in any byte code language such as JAVA. The softwareprograms or executable instructions may be stored on or in one or morearticles of manufacture as object code.

While the invention has been particularly shown and described withreference to specific embodiments, it should be understood by thoseskilled in the art that various changes in form and detail may be madetherein without departing from the spirit and scope of the invention asdefined by the following claims.

1. A method for attribution of a conversion to an impression via ademand side service, the method comprising: (a) identifying, by a demandside service executing on one or more servers, a plurality of eventrecords for conversion events that occurred within a period of time ofadvertisements matched to impressions by the demand side service; (b)matching, by the demand side service, an event of an event record fromthe plurality of event records corresponding to an advertiser and auser, to a plurality of impressions matched by the demand side servicefor the advertiser and the user; (c) selecting, by the demand sideservice, an impression from the plurality of impressions with a timestamp less than a time stamp of a conversion event of the event record;and (d) storing, by the demand side service, an attribution of theselected impression with the conversion event of the event record. 2.The method of claim 1, wherein step (a) further comprises identifying,by the demand side service, event records corresponding to a user clickwithin the period of time.
 3. The method of claim 1, wherein step (a)further comprises identifying, by the demand side service, event recordscorresponding to a user view within the period of time.
 4. The method ofclaim 1, wherein step (a) further comprises identifying, by the demandside service, the plurality of event records for conversion events thatoccurred within a predetermined number of days.
 5. The method of claim1, wherein step (b) further comprises matching, by the demand sideservice, the event of a post view conversion to the plurality ofimpressions.
 6. The method of claim 1, wherein step (b) furthercomprises matching, by the demand side service, the event of a postclick conversion to the plurality of impressions.
 7. The method of claim1, wherein step (b) further comprises matching, by the demand sideservice, the event records having an advertiser identifier and a useridentifier matching the advertiser identifier and the user identifier ofrecords for the plurality of impressions.
 8. The method of claim 1,wherein step (c) further comprises selecting, by the demand sideservice, the impression from the plurality of impressions with the timestamp closest to the time stamp of the event record.
 9. The method ofclaim 1, wherein step (d) further comprises calculating, by the demandside service, a time lag for attribution by subtracting the time stampof the impression from the event time stamp.
 10. The method of claim 9,further comprising determining, by the demand side service, whether thetime lag for attribution is within an attribution window for a campaignof the advertiser corresponding to the impression.
 11. A system forattribution of a conversion to an impression via a demand side service,the system comprising: a demand side service executing on one or moreservers, the demand side service matching advertisements to impressionopportunities; and an events database comprising a plurality of eventrecords for conversion events that occurred within a period of time ofadvertisements matched to impression opportunities by the demand sideservice; wherein an attribution component of the demand side servicematches an event of an event record from the plurality of event recordsof the events database corresponding to an advertiser and a user to aplurality of impressions matched by the demand side service for theadvertiser and the user, and selects an impression from the plurality ofimpressions with a time stamp less than a time stamp of a conversionevent of the event record; and wherein the attribution component storesan association of the selected impression with the conversion event ofthe event record.
 12. The system of claim 11, wherein the demand sideservice identifies event records corresponding to a user click withinthe period of time.
 13. The system of claim 11, wherein the demand sideservice identifies event records corresponding to a user view within theperiod of time.
 14. The system of claim 11, wherein the demand sideservice identifies the plurality of event records for conversion eventsthat occurred within a predetermined number of days.
 15. The system ofclaim 11, wherein the attribution component matches the event of a postview conversion to the plurality of impressions.
 16. The system of claim11, wherein the attribution component matches the event of a post clickconversion to the plurality of impressions.
 17. The system of claim 11,wherein the attribution component matches the event records having anadvertiser identifier and a user identifier matching the advertiseridentifier and the user identifier of records for the plurality ofimpressions.
 18. The system of claim 11, wherein the attributioncomponent selects the impression from the plurality of impressions withthe time stamp closest to the time stamp of the event record.
 19. Thesystem of claim 11, wherein the attribution component calculates a timelag for attribution by subtracting the time stamp of the impression fromthe event time stamp.
 20. The system of claim 19, wherein theattribution component determines whether the time lag for attribution iswithin an attribution window for a campaign of the advertisercorresponding to the impression.